假设此组件上正在进行订阅管理,您可以针对未准备好的数据进行防御:
render () {
const currentFanpage = Fanpages.findOne({fanpageName: this.fanpage});
if (!currentFanpage) {
return (
<div />
);
} else {
const currentGreeting = currentFanpage.fanpageInfo.config.greeting[0].text
return (
// your html
)
}
}
更好的是,让父组件渲染微调器,直到订阅完成
.ready()
使现代化
你问过使用
createContainer
具有
withRouter
. 我通常不使用
带路由器
我还没有测试过,但应该是这样的:
const container = () => {
const sub = Meteor.subscribe('mysub');
const loading = sub.ready();
const user = Meteor.user();
return { loading, user };
}
export default withRouter(container, Greetings))
重要的是容器有一个
loading
与订阅状态相关的密钥。
Container tutorial