0Pricing
React Academy · Lektion

Zustand mit localStorage synchronisieren

Erstellen Sie einen benutzerdefinierten useLocalStorage-Hook, der den React-Zustand bidirektional mit localStorage synchron hält.

Zustand mit localStorage synchronisieren ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Der naive Ansatz führt zu inkonsistenten Daten

Der erste Impuls ist oft, localStorage an einer Stelle zu lesen und an einer anderen zu beschreiben. Dadurch können beide auseinanderlaufen. Zustandsaktualisierungen, bei denen das Persistieren vergessen wird, oder persistierte Werte, die sich nicht im Zustand widerspiegeln, führen zu Fehlern.

Sie benötigen eine einzige Quelle der Wahrheit, die den React-Zustand und den Speicher synchron hält.

Der benutzerdefinierte useLocalStorage-Hook

Die saubere Lösung ist ein useLocalStorage-Hook, der useState kapselt und Änderungen automatisch persistiert. Er gibt wie useState einen Wert und einen Setter zurück.

Verwender nutzen ihn genau wie normalen Zustand, erhalten aber die Persistenz automatisch dazu.

Funktion zur verzögerten Initialisierung

Das Lesen aus localStorage ist eine synchrone Operation und sollte daher nicht bei jedem Rendern erfolgen. Übergeben Sie eine Funktion an useState, den sogenannten Lazy Initializer, damit der Lesevorgang nur einmal beim Mounten stattfindet.

In dieser Funktion parsen Sie den gespeicherten Wert oder geben den vorgegebenen Standardwert zurück.

Warum eine verzögerte Initialisierung wichtig ist

Wenn Sie den initialen Zustand direkt als Argument berechnen, wird dieser Ausdruck bei jedem Rendern ausgeführt, obwohl sein Ergebnis nach dem ersten Rendern ignoriert wird. Bei einer Funktion ruft React sie nur einmal auf.

Bei Lesevorgängen aus localStorage vermeiden Sie dadurch bei jedem Rendern synchrone Arbeit im Hauptthread.

Synchronisierung mit useEffect

Um Aktualisierungen zu persistieren, fügen Sie einen useEffect hinzu, der bei jeder Änderung des Werts ausgeführt wird und localStorage.setItem(key, JSON.stringify(value)) aufruft.

Wenn Sie den Wert in das Abhängigkeitsarray aufnehmen, wird jede Zustandsänderung automatisch in den Speicher geschrieben.

Funktionale Aktualisierungen vermeiden veraltete Closures

Wenn Sie den neuen Wert ausgehend vom vorherigen Wert setzen, verwenden Sie die funktionale Form setValue(prev => prev + 1). So vermeiden Sie veraltete Closures, bei denen ein früher erfasster Wert geschrieben würde.

Das ist besonders in Event-Handlern und Effekten wichtig, die möglicherweise einen veralteten Snapshot enthalten.

Umgang mit einem null-Wert im Speicher

getItem gibt null zurück, wenn der Schlüssel nicht existiert. Ihr Initializer muss dies erkennen und stattdessen auf den Standardwert zurückgreifen, anstatt null zu parsen.

Eine Prüfung wie stored != null ? JSON.parse(stored) : defaultValue behandelt den ersten Besuch problemlos.

TypeScript-Generics

In TypeScript machen Sie den Hook generisch: function useLocalStorage<T>(key: string, initial: T). Dadurch bleibt der Werttyp erhalten, sodass Verwender vollständige Typsicherheit erhalten.

Das zurückgegebene Tupel ist als [T, Dispatch<SetStateAction<T>>] typisiert und entspricht damit useState.

Versionierung gespeicherter Daten

Mit der Zeit ändert sich die Struktur Ihrer Daten, und alte gespeicherte Werte können neuen Code beeinträchtigen. Speichern Sie zusammen mit den Daten einen Versionsschlüssel, damit Sie veraltete Formate erkennen können.

Speichern Sie beispielsweise { version: 2, data } und vergleichen Sie die Version beim Lesen.

Löschen bei abweichender Version

Wenn die gespeicherte Version nicht mit der aktuellen übereinstimmt, verwerfen oder migrieren Sie den alten Wert, anstatt ihm zu vertrauen. Die einfachste Strategie besteht darin, den veralteten Eintrag zu entfernen und auf die Standardwerte zurückzugreifen.

So verhindern Sie Abstürze durch Daten, die von einer älteren Version Ihrer App geschrieben wurden.

Den Hook zusammensetzen

Ein vollständiger useLocalStorage-Hook kombiniert einen verzögerten Initializer, der Daten sicher liest und parst, einen Setter, der funktionale Aktualisierungen unterstützt, und einen useEffect, der die Daten mit Versionierung in den Speicher schreibt.

Das Ergebnis ist ein direkter Ersatz für useState, der Reloads übersteht.

Schnelltest

Testen Sie Ihr Verständnis der Zustandsinitialisierung.

Zusammenfassung

Sie haben gelernt, einen useLocalStorage-Hook mit einem verzögerten Initializer zu erstellen, Änderungen über useEffect zu persistieren, funktionale Aktualisierungen zur Vermeidung veralteter Closures zu verwenden und mit null-Werten umzugehen.

Außerdem haben Sie TypeScript-Generics und Versionierung kennengelernt, um veraltete Daten sicher zu löschen.

Häufig gestellte Fragen

Ist die Lektion „Zustand mit localStorage synchronisieren“ kostenlos?

Ja — der vollständige Text von „Zustand mit localStorage synchronisieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Zustand mit localStorage synchronisieren“?

Erstellen Sie einen benutzerdefinierten useLocalStorage-Hook, der den React-Zustand bidirektional mit localStorage synchron hält. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Zustand mit localStorage synchronisieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. localStorage in React lesen und schreiben
  2. Zustand mit localStorage synchronisieren
  3. Storage-Ereignisse zwischen Tabs verarbeiten
  4. sessionStorage, IndexedDB und die passende API
← Zurück zu React Academy