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 imsetAlarmTimeAber 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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage