2016-10-05 24 views
1

私は本当に面倒な問題があり、なぜそれが起こっているのか理解できません。私は、次のコンテナを持っている:MeteorのcreateContainerのReactコンポーネントに小道具が渡されていません

export class SomeComponent extends Component { 
    constructor(props) { 
     super(props); 
     console.log(this.props); 
    } 
}; 

私は、容器とからsomeDataの内容をconsole.logとき、それはいくつかのデータが含まれています。ここでは

export default SomeContainer = createContainer((params) => { 

    const handle1 = Meteor.subscribe('SomePub'); 
    const isReady1 = handle1.ready(); 

    var someData = []; 
    if(isReady1){ 
     someData = collections.SomeColl.find({}).fetch(); 
    } 

    console.log(someData); 

    return { 
     someData: someData 
    }; 

}, SomeComponent); 

はコンポーネントです。しかし、コンポーネントの小道具でsomeDataをチェックすると、空の配列としてsomeDataと表示されます。

誰でも何が起こっているか知っていますか?

+0

コンソールログを投稿できますか? – JeremyK

答えて

1

あなたのコンソールを見ると次のような表示されるはずですログイン:

  1. ログcreateContainerから、someDataがが[]の表示 - データがフェッチされる前にcreateContainerを返すために。同じを示すSomeComponent.constructorから
  2. ロギング、 - this.props someDataが例えばデータを示し、createContainerから[](空の配列)

  3. ロギングあります[Object、Object、Object、Object、Object] - クライアントはminiMongoにデータを持ち、コンポーネントを再レンダリングしました。 createContainerを再実行、およびコンポーネントのrenderメソッド - -

は、あなたのコンポーネントがサーバからデータを受信すると、再レンダリングではなく、コンストラクタ。

console.log(this.props);をコンストラクタからレンダリングメソッドに移動すると、データが受信されたことがわかります。出力に表示すると、ブラウザに表示されます。

+0

コメントありがとうございます。 componentWillReceiveProps関数にconsole.logを配置する必要があることに気付きました。 – JoeTidee

関連する問題