2016-08-08 16 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小道具を介してデータにアクセスできます。

ちょうどあなたがあなたのコンテナに、このようなものを追加してください:

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

をジャストヘッドアップ:私は上記のように示した

また、あなたがautopublish削除したと仮定するとああ、それに加入するために、特定のユーザーのデータを公開します。

関連する問題