我遇到了 React.js 的一些问题,并且在调用 setState() 时没有立即设置状态。我不确定是否有更好的方法来解决这个问题,或者它是否真的只是 React 的一个缺点。我有两个状态变量,其中一个基于另一个。(原始问题的小提琴:http : //jsfiddle.net/kb3gN/4415/你可以在日志中看到当你点击按钮时它没有立即设置)
setAlarmTime: function(time) {
this.setState({ alarmTime: time });
this.checkAlarm();
},
checkAlarm: function() {
this.setState({
alarmSet: this.state.alarmTime > 0 && this.state.elapsedTime < this.state.alarmTime
});
}, ...
调用 时setAlarmTime
,由于this.state.alarmTime
不会立即更新,因此基于 和 的先前值对checkAlarm
set的以下调用是不正确的。alarmSet
this.state.alarmTime
我通过将调用移动checkAlarm
到setState
in的回调中解决了这个问题setAlarmTime
,但是必须跟踪什么状态实际上是“正确的”并尝试将所有内容都放入回调中似乎很荒谬:
setAlarmTime: function(time) {
this.setState({ alarmTime: time }, this.checkAlarm);
}
有没有更好的方法来解决这个问题?我的代码中还有一些其他地方引用了我刚刚设置的状态,现在我不确定何时可以真正信任状态!
谢谢