从docs,我得到我需要在我的组件周围使用反应数据容器来检索当前登录的用户(如果存在),但是如何从该容器中获取数据? / p>
import { Meteor } from 'meteor/meteor';
import React, { Component } from 'react';
import { createContainer } from 'meteor/react-meteor-data';
export default FooContainer = createContainer(() => {
return {
user: Meteor.user()
};
}, class FooComponent extends Component {
render() {
return (<div>{ /* this.data.user ??? */ }</div>);
}
});
如何从render
方法中获取容器函数返回的数据?
答案 0 :(得分:1)
我发现您在容器中返回了user
个密钥,因此您的数据可以通过组件中的this.props.user
道具进行访问。
请确保在容器中添加以下内容:
export default FooContainer = createContainer(() => {
const subscription = Meteor.subscribe("userData");
subscription.ready() ? Session.set("dataReady", true) : Session.set("dataReady", false);
return {
user: Meteor.user()
};
}
并在你的渲染方法中:
render() {
if(Session.get("dataReady")){
return (<div>{ /* this.data.user ??? */ }</div>);
}
}
相信我,它将为您节省很多头痛和未来的许多错误。这将确保您的数据在您的组件中调用和呈现之前已100%准备就绪。
哦,还假设你已经删除了自动发布,发布特定用户的数据,以便像我上面所示订阅它:
Meteor.publish("userData", function(){
return Meteor.users.find({_id: this.userId});
});
只是抬头。