2016-07-11 12 views
0

私はStageを持っています。私のアプリケーションにはそれぞれ異なるデータセットが含まれています。親のsetState後に子を再登録

私がしたいことは、ステージを変更した場合、そのステージからのデータで子コンポーネントが更新されることです。

enter image description here

私は私のApp.jsxコンポーネントでは、各ページの上部に、この段階の選択をしています。 この段階は、私の二次(子 - しかし、深いダウン)にReduxの

.... 
changeStage: function (stageId) { 
    this.props.setStage(this.getStageById(stageId)); 
}, 
.... 
var mapDispatchToProps = function (dispatch) { 
return { 
     setStage: function (data) { dispatch(stageService.setStage(data)); } 
    } 
}; 
module.exports = ReactRedux.connect(mapStateToProps, mapDispatchToProps)(App); 

を通じて状態によって処理され、私は次のようしているコンポーネント:

shouldComponentUpdate: function (nextprops, nextstate) { 
    console.log("stage id in this component: " + this.state.stageId); 
    console.log("stage id in nextstate: " + nextstate.stageId); 
    console.log("stage id from the redux store: "+ this.props.stage.id) 

    return true; 
}, 
.... 
var mapStateToProps = function (state) { 
    return { 
     stage: state.stage 
    }; 
} 

をしかし、更新期をnextstate含まれていませんが、むしろ前の段階では意味があります。 state.stageIdにも以前の情報が含まれています。 だがthis.props.stage.id私はを新たにの選択した段階を含むと予想したが、そうではない。

実際には以前のステージが含まれています。これは、状態が更新される前、または状態の更新中に呼び出されることを意味します。

とにかく私の質問は、どうすれば新しいステージを選択できますか? ステージオブジェクトをすべての子供に伝えたくないので、それはもう読めなくなってしまい、私の意見では駄目になるからです。 誰でも知っていますか?

+2

現在のthis.props.stage.idの代わりにnextprops.stage.idを試しましたか? –

+0

それはうまくいきました。回答として投稿してください。受け入れることができます。ありがとうございました。 – Tikkes

答えて

0

あなたは単にあなたのコンポーネントに渡さnextpropsを取得するためにthis.props.stage.idの代わりにnextprops.stage.id使用する必要があります。

関連する問題