【发布时间】:2016-01-22 06:32:52
【问题描述】:
为了响应状态变化,我想触发另一个状态变化。这本质上是个坏主意吗?
具体的场景是组件被建模为状态机,根据this.state.current_state的值呈现不同的信息。但是外部事件可以促使它经历状态转换,通过通量存储改变它的状态。这是一个人为的场景来传达这个想法:
我认为正确的生命周期方法是shouldComponentUpdate。大意是这样的:
shouldComponentUpdate: function(nextProps, nextState) {
if (nextState.counter > 4 && this.state.current_state !== DISPLAY_MANY) {
this.setState({ current_state: DISPLAY_MANY });
}
return true;
}
在某些子组件中,counter 可能会增加,因此我不想根据某些 counter 变量的值来推断它会显示什么,而是想显式地对状态进行编码。
真实的场景比这更复杂,但希望这个场景足够详细,可以理解这个想法。可以按照我的想法去做吗?
编辑:修复代码示例,通过添加额外的状态条件来避免触发无限循环
【问题讨论】:
-
为什么不将整个 FSA 逻辑移出组件?
标签: reactjs reactjs-flux flux