私はStage
を持っています。私のアプリケーションにはそれぞれ異なるデータセットが含まれています。親のsetState後に子を再登録
私がしたいことは、ステージを変更した場合、そのステージからのデータで子コンポーネントが更新されることです。
私は私の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
私はを新たにの選択した段階を含むと予想したが、そうではない。
実際には以前のステージが含まれています。これは、状態が更新される前、または状態の更新中に呼び出されることを意味します。
とにかく私の質問は、どうすれば新しいステージを選択できますか? ステージオブジェクトをすべての子供に伝えたくないので、それはもう読めなくなってしまい、私の意見では駄目になるからです。 誰でも知っていますか?
現在のthis.props.stage.idの代わりにnextprops.stage.idを試しましたか? –
それはうまくいきました。回答として投稿してください。受け入れることができます。ありがとうございました。 – Tikkes