2014-11-08 3 views
6

Die Dokumentation für die reactjs isMounted API erwähnt, dass:ReactJS: Wann sollte setState von isMounted geschützt werden?

Sie diese Methode verwenden, können asynchrone Aufrufe setState() oder forceUpdate() zu schützen.

Meine primäre Frage ist, wann sollte ein Aufruf an setState() durch zu isMounted() durch einen Anruf bewacht?

Im Initial AJAX Tutorialhttp://facebook.github.io/react/tips/initial-ajax.html die setState im XHR Callback verwendet die isMounted() Wache, aber ist dies erforderlich?

Eine zweite Frage ist, wenn es erforderlich ist, warum ist es so? Es scheint, dass der Check selbst sehr einfach ist und in die setState() ohne signifikante Leistungseinbußen, aber mit einer großen Vereinfachung der API-Nutzung integriert werden könnte.

Antwort

4

Logisch isMounted erforderlich, wenn die Komponente beim Aufruf des Callbacks abgehängt werden könnte.

Die beste Vorgehensweise besteht darin, dies in der KomponenteWillUnmount z. Abbrechen einer Ajax-Anfrage, Abbrechen eines Timeouts oder Abbestellen eines Ereignisses.

Möglicherweise ist die API auf diese Weise einfacher, da setState nicht automatisch fehlschlägt, wenn es zu einem ungeeigneten Zeitpunkt aufgerufen wird. Stummes Scheitern verursacht viele Fehler, die schwer zu finden sind.