0Pricing
React Academy · Lektion

State mit der Persist-Middleware speichern

Synchronisieren Sie Zustand-State mit localStorage oder sessionStorage, indem Sie die Persist-Middleware verwenden.

State mit der Persist-Middleware speichern ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

Willkommen

In dieser Lektion verwenden Sie die persist-Middleware von Zustand, um den Store-Zustand automatisch mit localStorage zu synchronisieren, damit er beim Neuladen der Seite erhalten bleibt.

Warum den Zustand speichern?

Ohne Persistenz wird der gesamte Store-Zustand zurückgesetzt, wenn der Benutzer die Seite aktualisiert. Wenn Sie Stores wie Warenkornelemente, Benutzereinstellungen oder UI-Zustand (geöffnete Bereiche) in localStorage speichern, erhalten Benutzer über mehrere Sitzungen hinweg ein nahtloses Nutzungserlebnis.

Die persist-Middleware

Umschließen Sie Ihren create()-Aufruf mit persist(). Geben Sie einen eindeutigen Speicherschlüssel an. Zustand liest beim Mounten automatisch aus localStorage und schreibt bei jeder Zustandsänderung dorthin.
import { create } from 'zustand';
import { persist } from 'zustand/middleware';

const useCartStore = create(
  persist(
    (set) => ({
      items: [],
      addItem: (item) => set(s => ({ items: [...s.items, item] })),
    }),
    { name: 'cart-storage' } // localStorage key
  )
);

Teilweise Persistenz mit partialize

Verwenden Sie `partialize`, um nur bestimmte Zustandsbereiche des Stores zu speichern. Dadurch werden vorübergehende Daten, etwa Ladeindikatoren, von der Speicherung in localStorage ausgeschlossen.
persist(
  (set) => ({ user: null, token: null, loading: false, fetch: () => {} }),
  {
    name: 'auth-storage',
    partialize: (state) => ({ user: state.user, token: state.token }),
    // loading and fetch are NOT persisted
  }
)

sessionStorage verwenden

Um Daten nur für die Browsersitzung zu speichern, sodass sie beim Schließen des Tabs gelöscht werden, übergeben Sie `createJSONStorage(() => sessionStorage)` als Speicheroption.
import { createJSONStorage } from 'zustand/middleware';

persist(storeCreator, {
  name: 'session-data',
  storage: createJSONStorage(() => sessionStorage),
})

Versionierung und Migration

Wenn sich die Struktur Ihres Stores ändert, etwa durch neue Felder oder umbenannte Schlüssel, setzen Sie eine `version` und stellen Sie eine `migrate`-Funktion bereit, um alte gespeicherte Daten zu aktualisieren.
persist(storeCreator, {
  name: 'my-store',
  version: 2,
  migrate: (persistedState, version) => {
    if (version === 1) {
      return { ...persistedState, newField: 'default' };
    }
    return persistedState;
  },
})

Hydration und SSR

Auf dem Server (Next.js) ist localStorage nicht vorhanden. Die persist-Middleware von Zustand behandelt dies problemlos: Sie überspringt die Hydration auf dem Server und führt nach dem Mounten auf dem Client eine erneute Hydration durch.

onRehydrateStorage-Callback

Verwenden Sie `onRehydrateStorage`, um Code auszuführen, wenn der Store aus dem Speicher wiederhergestellt wird. Das ist beispielsweise nützlich, um nach der Wiederherstellung eines Tokens einen API-Aufruf auszulösen.
persist(storeCreator, {
  name: 'auth',
  onRehydrateStorage: () => (state) => {
    if (state?.token) state.fetchUser();
  },
})

Gespeicherten Zustand löschen

Rufen Sie `useMyStore.persist.clearStorage()` auf, um die gespeicherten Daten aus localStorage zu entfernen – beispielsweise beim Abmelden.
const handleLogout = () => {
  useAuthStore.persist.clearStorage();
  useAuthStore.setState({ user: null, token: null });
};

Grenzen der Speichergröße

localStorage ist pro Origin auf 5–10 MB begrenzt. Vermeiden Sie es, große Datenmengen zu speichern, etwa vollständige Produktkataloge. Speichern Sie nur Identifikatoren oder kleine Konfigurationsobjekte.

Kurzer Check

Mit welcher Option der persist-Middleware können Sie bestimmte Zustandsfelder von der Speicherung in localStorage ausschließen?

Zusammenfassung

Umschließen Sie Ihren Zustand-Store mit persist() und geben Sie einen name-Schlüssel an. Verwenden Sie partialize, um nur relevante Zustandsbereiche zu speichern. Versionieren und migrieren Sie den Store, wenn sich seine Struktur ändert. Verwenden Sie clearStorage() beim Abmelden.

Als Nächstes

Nächste Lektion: **Zustand-DevTools und Stores testen** — Sie werden eine Verbindung zu Redux DevTools herstellen und Unit-Tests für Zustand-Actions schreiben.

Häufig gestellte Fragen

Ist die Lektion „State mit der Persist-Middleware speichern“ kostenlos?

Ja — der vollständige Text von „State mit der Persist-Middleware speichern“ 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 „State mit der Persist-Middleware speichern“?

Synchronisieren Sie Zustand-State mit localStorage oder sessionStorage, indem Sie die Persist-Middleware verwenden. 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 3 von 4.

Wie lange dauert die Lektion „State mit der Persist-Middleware speichern“?

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. Ihren ersten Zustand-Store erstellen
  2. Selectoren und das Vermeiden unnötiger erneuter Renderings
  3. State mit der Persist-Middleware speichern
  4. Zustand DevTools und Stores testen
← Zurück zu React Academy