2016-08-08 31 views
0

docs我得知我需要在组件周围使用反应数据容器来检索当前登录的用户(如果存在),但是如何从该容器中获取数据?从反应容器中获取数据

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方法中的容器函数返回数据?

+2

您是否尝试过'this.props.user'? – Gemmi

+0

我*只是*意识到,当'console.log(this);':) –

回答

1

我看到你在你的容器中返回了一个user密钥,因此你的数据可以通过你的组件中的this.props.user prop获得。

只要确保你添加了一些类似这样的,您的容器:

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}); 
}); 

只是抬起头来。