【发布时间】:2015-08-25 15:15:14
【问题描述】:
我使用 Meteor 和 react 和 FlowRouter 来处理订阅。我发现当我的组件渲染时,它会在几秒钟后渲染两次,但只有当我订阅了流星混合时。
例如:
PeoplePage = React.createClass({
displayName:"People",
mixins: [ReactMeteorData],
getMeteorData() {
const subHandles = [
Meteor.subscribe("allPeople"),
];
const subsReady = _.all(subHandles, function (handle) {
return handle.ready();
});
return {
subsReady: subsReady,
people: People.find({}).fetch(),
};
},
render(){
if(this.data.subsReady == false){
return (<Loading/>);
} else {
console.log(this.data);
........
}
相同的信息显示两次。这是由于 FlowRouter 使用的快速渲染,还是我做错了什么?
【问题讨论】:
-
如果将console.log移到顶部,它会如何捕获subsReady的两种状态? getMeteorData 中的订阅是正确的,如果您已经有订阅,它不会添加第二个订阅,并且它会确保在您离开页面时取消订阅,而无需您做任何事情。但是,我假设您已经告诉 flowrouter 订阅它以使用快速渲染,所以您可以一起跳过它。
标签: javascript meteor reactjs flow-router