我已经添加了'meteor-react'软件包,我正在阅读显微镜教程.在此过程中,我只是用React替换Blaze模板步骤,但我不确定如何正确地执行它,以便Collections将与Reactjs框架进行反应.
"帖子"是一个mongo系列.在我的main.js中:
// Startup application
Meteor.startup(function() {
var target = document.getElementsByTagName('body')[0];
var data = Posts.find().fetch(); // RACE CONDITION occurs here.
React.renderComponent(new StreamAtom({ "data": data}), target);
});
Run Code Online (Sandbox Code Playgroud)
在StreamAtom.jsx react组件中,"data"只是设置为初始状态.
问题:
Posts.find().fetch()存在竞争条件,因此大多数时候页面都不呈现.Meteor中没有回调,Blaze会在没有回调的情况下处理"Posts.find()",所以我错过了什么?
另外,如何在没有获取的情况下仅使用Posts.find()?由于fetch()返回结果数组而不是Mongo游标,因此我担心React实际上不会对集合的更改做出反应.
非常感谢提前,
我希望这能帮助我更好地了解流星.
将React渲染函数调用包装进Tracker.autorun- 这就是Meteor的大多数客户端反应发生的原因:
// Startup application
Meteor.startup(function() {
Tracker.autorun(function () {
var target = document.getElementsByTagName('body')[0];
var data = Posts.find().fetch(); // RACE CONDITION occurs here.
React.renderComponent(new StreamAtom({ "data": data}), target);
});
});
Run Code Online (Sandbox Code Playgroud)
关于Tracker的综合指南:https://github.com/meteor/meteor/tree/devel/packages/tracker
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |