2016-11-03 2 views
3

Ich versuche gerade, mein sessionStorage vor dem Rendern zu speichern.initiiliaze & sessionStorage in Reagieren verwenden?

Mein Code ist so etwas wie dieses:

componentWillMount() { 
     sessionStorage.setItem("isUserLogged", false); 
    } 

Sein einen Fehler verursacht sessionStorage ist nicht definiert. Wie initialisiere ich meine sessionStorage in Reagieren vor dem Rendern?

+2

versuchen window.sessionStorage.setItem ("Schlüssel" Verwendung abrufen " Wert"); –

+0

@Kartik_Agarwal Gerade versucht, dass, es zeigt jetzt 'Fenster' ist nicht definiert –

+0

Sie verwenden Server Seite Rending oder Client-Seite? –

Antwort

4

SessionStorage ist nicht verfügbar, wenn serverseitiges Rendering verwendet wird (Sie können sich darüber lustig machen, aber die Daten sind für den Benutzer nicht verfügbar).

es verfügbar ist nur in Browser https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

Beispiel des Schreibens Speicher

window.sessionStorage.setItem("key", "value"); 

Um Artikel aus dem Lager

window.sessionStorage.getItem("key"); 
+3

Dies ist eine alte Frage, aber können Sie darauf hinweisen, dass sessionStorage funktioniert, wenn die Komponente geladen wurde. Das ist der Moment, in dem 'sessionStorage' definiert wird. –

+0

Die Antwort ist richtig, dass es nur auf der Client-Seite verfügbar ist. Um jedoch die obige Frage richtig zu beantworten, sollte IMO die Antwort darauf hinweisen, dass Sie dies in componentDidMount ... nutzen können, was geschieht, nachdem die React-Komponente vollständig clientseitig ist. Das Muster, das Sie verwenden möchten, initialisiert eine Statusvariable mit einer Standardeinstellung und aktualisiert sie dann mit den Sitzungsinformationen, sobald die Komponente geladen ist. – engineerDave

Verwandte Themen