能有人給我如何做反應,終極版以下線索:如何應對redux中的狀態變化併發出另一個動作?
A組分調度,更新狀態(異步)的動作
成分B(不是A的一個子組件)需要能夠檢測狀態何時發生變化併發送另一個動作。
我的問題是當我嘗試在組件B中執行調度操作2時,狀態仍處於初始狀態並且未更新。
我也試過在componentWillUpdate調度動作2,但是,創建一個無限循環,因爲第二個動作也更新狀態(和異步)
這是怎麼樣子,或多或少:
//----- Component A
class ComponentA extends React.Component {
constructor(props) {
super(props);
this.props.dispatch(loadEvents()); // loadEvents is async and will update state.eventsState
}
}
const mapStateToProps = function (state) {
return {
eventsState: state.eventsState,
};
};
export default connect(mapStateToProps)(ComponentA);
//----- Component B
class ComponentA extends React.Component {
constructor(props) {
super(props);
props.dispatch(getEventUsers(props.eventsState.eventId)); // the eventsState is in initial state here (empty)...where do I call getEventUsers?
}
componentWillUpdate(nextProps) {
nextProps.dispatch(getEventUsers(props.eventsState.eventId)) // Creates an infinite loop, getEventUsers also updates state
}
}
const mapStateToProps = function (state) {
return {
eventsState: state.eventsState,
};
};
export default connect(mapStateToProps)(ComponentA);
組件B應該考慮啓動負載和負載之間的時間。它可以顯示一個微調或沒有(空格)。即使你的'loadEvents' reducer是同步的,也不能保證它首先被調度。 React獨自決定何時調用各種函數,比如'shouldComponentUpdate'甚至你的組件構造函數。 – DDS