流星订阅准备
问题描述:
我'建立一个反应/流星应用。我遇到订阅问题。当subscriotion.ready()为false时会显示一个组件。当它变成真正的组件由数据表所取代,但它需要的准备,并从find()方法的数据之间的几秒钟。取(),显示了一会儿另一个组件。流星订阅准备
有什么建议吗?
感谢
答
如果您正在使用react-meteor-data
你可以在ready
财产subscription
状态。然后,您可以将此属性发送到演示组件并相应地进行更新。从包中的文件
的示例代码段:
import { createContainer } from 'meteor/react-meteor-data';
export default PresenterContainer = createContainer(props => {
// Do all your reactive data access in this method.
// Note that this subscription will get cleaned up when your component is unmounted
const handle = Meteor.subscribe('publication_name');
return {
isReady: ! handle.ready(),
list: CollectionName.find().fetch(),
};
}, PresenterComponent);
说明: 的第一个参数是createContainer
的反应函数,将得到重新运行时其活性投入改变。
的PresenterComponent
组件将收到{的isReady,列表}道具。所以,你可以根据isReady
加成状态呈现您的组件: 写您这样的演示组件的render
方法:
render(){
if(!this.isReady) return <LoadingComponent/>
else if(this.props.list.length() != 0) return <TableComponent/>
else return <NoDataFoundComponent/>
}
您好,感谢..我是做这个差不多,只是我有一个Meteor.autorun所述签约在我删除,但准备和查找数据仍然存在之间的延迟。大约1秒钟,足以显示“没有找到记录”的组件。 –
谢谢,我只是固定它改变由观看参数“没有找到记录”组件,现在它基于准备和counts.get()== 0。现在是加载组件删除和数据之间的时间,但没有“找不到记录”组件的情况下它会好得多。 –
我已经更新了我的答案,如果它可以帮助别忘了给予好评或接受! :) –