我在嘗試瞭解如何使用不同的「頁面」或「視圖」構建ReactJS應用程序。在ReactJS中更新父母狀態的子道具
我有以下組件作爲我的基本應用程序,我在React狀態中使用currentState屬性來切換視圖中哪些組件處於活動狀態。
class App extends React.Component {
constructor(props) {
super(props);
this.state = {currentState: 'Loading', recipes: []};
this.appStates = {
'Loading': <Loading/>,
'Home': <RecipeList recipes={this.state.recipes}/>
}
}
dataLoaded(data) {
this.setState({
recipes: data,
currentState: 'Home'
});
}
componentDidMount() {
// AJAX Code that retrieves recipes from server and then calls dataLoaded
}
render() {
return this.appStates[this.state.currentState];
}
}
哪個工作,但是當dataLoaded回調被觸發時,組件從不接收更新的配方數組。
如何根據應用程序中更新的狀態更新其道具?
或者我以錯誤的方式接近這件事?
我認爲正在發生的事情是因爲「家」組件在構造函數中被定義,並且您將它的配方設置到數組中,當您更新配方數組時,您不會將元素推送到現有數組上,而是將新數組設置爲該變量,因此組件從不更新爲新數據。 – dule