2016-08-08 59 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}); 
}); 

只是擡起頭來。