2014-02-12 12 views
8

Ich möchte den Status meiner App unter localStorage speichern. Gibt es einen Rückruf oder ein Ereignis, das bei einer Statusänderung ausgelöst wird? Ich würde es verwenden, um localStorage.state = JSON.stringify(this.state) zu rufen. Möglicherweise mit 0,5 Sekunden Drosselung.React.js: Synchronisieren des gesamten Status mit localStorage

TodoMVC React examples verwendet localStorage als Speicher. Es definiert jedoch das Speichern und Entfernen in Ereignishandlern wie keydown und click. Für meinen Fall würde das gleiche Ergebnis eine Menge Vortex erzeugen.

Antwort

22

In einer componentDidUpdate Lifecycle-Methode können Sie den Zustand serialisiert:

componentDidUpdate: function(prevProps, prevState) { 
    localStorage.state = JSON.stringify(this.state); 
} 

Dieser Code wird jedes Mal der Komponente rerenders ausgeführt werden (die mit allen Requisiten oder Zustandswechsel geschieht).

+4

Dies funktioniert gut für React allein, für jeden, der dies mit React + Flux versucht, bedenken Sie, dass Sie Stores damit auch synchronisieren müssen. In diesem Fall könnten Sie den Status jedes Speichers von localStorage.state initialisieren, oder Sie könnten die Daten jedes Speichers einzeln zwischenspeichern. –

+0

Das genau das Problem habe ich @ http://stackoverflow.com/questions/28375718/whoo-is-responsible-to-fetch-dato-from-server-in-a-flux-app-with-caching – amirouche

+0

Hier ist ein [Geige] (https://jsfiddle.net/ohujp97v/4/) von dieser Arbeit in einem Reagieren basierten TODO MVC Beispiel. –

Verwandte Themen