2016-04-27 15 views
3

Ich weiß, dass Sie shouldComponentUpdate verwenden können, um zu entscheiden, ob render aufgerufen werden soll oder nicht. Unter Berufung auf die Dokumentation:Wie ignoriere ich eine Eigenschaftsaktualisierung des Zustands in ReactJs?

Standardmäßig gibt shouldComponentUpdate immer wahr geringfügige Fehler zu verhindern, wenn Zustand an Ort und Stelle mutiert ist, aber wenn Sie zu vorsichtig sind immer Zustand als unveränderlich behandeln und nur von Requisiten und Zustand zu lesen in render() dann können Sie mit einer Implementierung überschreiben, die die alten Requisiten und Zustand mit ihren Ersetzungen vergleicht.

Aber mein Problem ist ein bisschen anders. Ich berechne einen Wert in componentDidUpdate, weil ein erster Render benötigt wird, um meine Berechnung zu tun, und ich möchte diesen Wert auf den Zustand speichern, um es später in der render Funktion verwenden zu können, aber ich will nicht einen Render auslösen, wenn ich ihn modifiziere.

Wie würden Sie es tun? Ist das der richtige Weg? Soll ich diesen Wert woanders speichern? Direkt auf der this?

Antwort

3

Berechnen Sie Ihren Status, bevor die Komponente tatsächlich aktualisiert wird.

Ihre Komponente wird mit anderen Änderungen berechnet und wird nur einmal aktualisiert.

+0

Oh! das ist ein interessanter Auslöser! Ich habe es in der Dokumentation gesehen, aber nur als eine Art Lebenszyklusbenachrichtigungspunkt betrachtet. Ich werde es versuchen und Sie auf dem Laufenden halten! thx – Sephy

+1

Für mich scheint es ein guter Ort zu sein, um den Zustand basierend auf Requisiten neu zu berechnen. Es ist so etwas wie 'getInitialState'. Im Gegensatz zu "getInitialState" wird es bei jeder Aktualisierung von Requisiten (und Zuständen) ausgelöst. – Andreyco

+1

Ja, das hat den Trick gemacht, vielen Dank! – Sephy

Verwandte Themen