2017-04-16 5 views
1

Ich bin mir bewusst, setState synchron oder asynchron sein können:Warum reagiert setState asynchron?

setState() nicht sofort this.state mutieren, sondern schafft einen anstehend Übergang. Der Zugriff auf this.state nach dem Aufruf dieser Methode kann möglicherweise den vorhandenen Wert zurückgeben.

Es gibt keine Garantie für den synchronen Betrieb von Anrufen an setState und Anrufe können für Leistungssteigerungen gebündelt werden.

Rechts, und ich verstehe die Funktion, ein paar Dinge ausführt:

  • Aktualisierung der Ist-Wert in dem Zustand
  • Aktualisieren der virtuellen und realen DOM wie mit dem neuen Staat benötigten Werte

Aber was ich versuche herauszufinden, ist das manchmal synchron und manchmal asynchron? Was passiert hinter der Szene? Warum kann es nicht immer synchron sein?

Danke.

+1

Haben Sie einen Blick in diese [Frage] (http://stackoverflow.com/questions/28922275/in-reactjs-why-does-setstate-behave-differtherly-when-synchronous)? – Felix

Antwort

0

Ihre Statusänderungen können aus verschiedenen Quellen stammen (abhängig von Ihrer App) und jede Statusänderung in der Komponente wird in einer Warteschlange geplant. Wenn Sie also in Ihrer Komponente eine this.setState() -Methode ausführen, wartet sie, bis alle anderen möglichen setStates für diese Komponente aufgelöst sind. Und es kann passieren, wenn Sie etwas wie dies tun. SetState ({value: this.state.value + 1}) und erwarten Ergebnis Dann wartet diese Operation auf gelöst werden und wenn während dieser Wartezeit eine andere Operation os Statusänderung passiert ist dann werden wir mit dem neuesten this.stare.value arbeiten, was zu unerwarteten Renditen führt. Im Allgemeinen, wenn ich mit Zustandsänderungen zu tun habe, die auf dem vorherigen Zustand basieren, ändere ich den Zustand wie folgt: this.setState ((prevState) => prevState.value + 1) Dies bedeutet, dass ich den Zustand, den ich habe Ich habe zur Zeit Änderungen an diesem Zustand vorgenommen, anstatt mich auf diesen Status zu verlassen.

Verwandte Themen