React.js mit einem Zustand, der auf einem anderen Zustand basiert
Ich habe Probleme mit React.js und der Status wird beim Aufruf von setState () nicht sofort gesetzt. Ich bin mir nicht sicher, ob es bessere Möglichkeiten gibt, dies zu erreichen, oder ob es wirklich nur ein Mangel von React ist. Ich habe zwei Zustandsvariablen, von denen eine auf der anderen basiert. (Geige des ursprünglichen Problems:http://jsfiddle.net/kb3gN/4415/ Sie können in den Protokollen sehen, dass es nicht sofort eingestellt ist, wenn Sie auf die Schaltfläche klicken)
setAlarmTime: function(time) {
this.setState({ alarmTime: time });
this.checkAlarm();
},
checkAlarm: function() {
this.setState({
alarmSet: this.state.alarmTime > 0 && this.state.elapsedTime < this.state.alarmTime
});
}, ...
Beim anrufensetAlarmTime
, schon seitthis.state.alarmTime
wird nicht sofort aktualisiert, der folgende Aufruf ancheckAlarm
setztalarmSet
basierend auf dem vorherigen Wert vonthis.state.alarmTime
und ist daher falsch.
Ich habe das gelöst, indem ich den Anruf auf verschoben habecheckAlarm
in den Rückruf vonsetState
imsetAlarmTime
Aber nachzuverfolgen, welcher Zustand tatsächlich "korrekt" ist und zu versuchen, alles in Rückrufe zu integrieren, erscheint uns lächerlich:
setAlarmTime: function(time) {
this.setState({ alarmTime: time }, this.checkAlarm);
}
Gibt es einen besseren Weg, dies zu tun? Es gibt ein paar andere Stellen in meinem Code, an denen ich auf den gerade festgelegten Status verweise, und jetzt bin ich mir nicht sicher, wann ich dem Status tatsächlich vertrauen kann!
Vielen Dank