React.js que tiene un estado basado en otro estado
Me encuentro con algunos problemas con React.js y el estado no se establece inmediatamente al llamar a setState (). No estoy seguro de si hay mejores formas de abordar esto, o si realmente es solo una deficiencia de React. Tengo dos variables de estado, una de las cuales se basa en la otra. (Violín del problema original:http://jsfiddle.net/kb3gN/4415/ puede ver en los registros que no está configurado de inmediato cuando hace clic en el botón)
setAlarmTime: function(time) {
this.setState({ alarmTime: time });
this.checkAlarm();
},
checkAlarm: function() {
this.setState({
alarmSet: this.state.alarmTime > 0 && this.state.elapsedTime < this.state.alarmTime
});
}, ...
Cuando llamesetAlarmTime
, ya quethis.state.alarmTime
no se actualiza de inmediato, la siguiente llamada acheckAlarm
conjuntosalarmSet
basado en el valor anterior dethis.state.alarmTime
y por lo tanto es incorrecto.
Resolví esto moviendo la llamada acheckAlarm
en la devolución de llamada desetState
ensetAlarmTime
, pero tener que hacer un seguimiento de qué estado es realmente "correcto" e intentar encajar todo en las devoluciones de llamada parece ridículo:
setAlarmTime: function(time) {
this.setState({ alarmTime: time }, this.checkAlarm);
}
¿Hay una mejor manera de hacerlo? ¡Hay algunos otros lugares en mi código que hago referencia al estado que acabo de configurar y ahora no estoy seguro de cuándo puedo realmente confiar en el estado!
Gracias