У меня возникают проблемы с React.js, и состояние, которое не устанавливается сразу при вызове setState(). Я не уверен, есть ли лучшие способы приблизиться к этому, или если это действительно является недостатком React. У меня есть две переменные состояния, одна из которых основана на другой. (Fiddle of original problem: 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
устанавливает alarmSet
на основе предыдущего значения this.state.alarmTime
и поэтому неверен.
Я решил это, переместив вызов checkAlarm
в обратный вызов setState
в setAlarmTime
, но нужно следить за тем, какое состояние на самом деле является "правильным" и пытаться вставить все в обратные вызовы, кажется смешным:
setAlarmTime: function(time) {
this.setState({ alarmTime: time }, this.checkAlarm);
}
Есть ли лучший способ сделать это? В моем коде есть несколько других мест, которые я ссылаюсь на состояние, которое я только что установил, и теперь я не уверен, когда я действительно могу доверять состоянию!
Спасибо