2016-07-11 150 views
0

所以我在我的應用程序中有一個Stage,它包含不同的每組數據。父母的setState之後的退孩子

我想要做的是如果我改變了我的舞臺,我的孩子組件刷新來自上述舞臺的數據。有

enter image description here

我在每一個頁面的頂部這一階段的選擇,在我App.jsx組件。 這個階段是由國家通過終極版

.... 
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

你試過nextprops.stage.id而不是當前this.props.stage.id嗎? –

+0

這確實有用,請將其作爲回答發佈,以便我可以接受。謝謝。 – Tikkes

回答

0

你只需要改用的this.props.stage.id nextprops.stage.id得到傳遞給你的組件nextprops。