【发布时间】:2014-12-28 11:03:09
【问题描述】:
我已经添加了“meteor-react”包,并且正在阅读显微镜教程。在此过程中,我只是将 Blaze 模板步骤替换为 React,但我不确定如何正确执行此操作,以使 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);
});
在 StreamAtom.jsx react 组件中,“数据”被简单地设置为初始状态。
问题:
Posts.find().fetch() 存在竞争条件,因此大多数时候页面不会呈现。 Meteor 中没有回调,Blaze 处理没有回调的“ Posts.find() ”,所以我错过了什么?
另外,我如何只使用 Posts.find() 而不使用 fetch?由于 fetch() 返回的是结果数组而不是 Mongo 游标,恐怕 React 实际上不会对集合的更改做出反应。
非常感谢,
我希望这能帮助我更好地了解流星。
【问题讨论】: