0Pricing
React Academy · Lektion

Storage-Ereignisse zwischen Tabs verarbeiten

Reagieren Sie mithilfe des storage-Ereignis-Listeners auf localStorage-Änderungen in anderen Browser-Tabs.

Storage-Ereignisse zwischen Tabs verarbeiten 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.

Das Problem veralteter Daten zwischen Tabs

Wenn Ihre App in zwei Tabs geöffnet ist und eine Person in Tab A einen Wert aktualisiert, zeigt Tab B weiterhin den alten Zustand an. Jeder Tab besitzt seinen eigenen React-Zustand im Arbeitsspeicher, obwohl beide localStorage gemeinsam nutzen.

Ohne Koordination stimmen die Tabs nicht mit dem aktuellen Wert überein.

Das storage-Ereignis wird in anderen Tabs ausgelöst

Der Browser löst bei jeder Änderung von localStorage ein storage-Ereignis in anderen Tabs derselben Origin aus. Wichtig ist, dass es nicht in dem Tab ausgelöst wird, der die Änderung vorgenommen hat.

Genau dieses Signal benötigt Tab B, um zu erfahren, dass Tab A etwas aktualisiert hat.

Abhören mit addEventListener

In einem useEffect rufen Sie window.addEventListener('storage', handler) auf und geben eine Bereinigung zurück, die den Listener entfernt. Dadurch abonnieren Sie Änderungen zwischen Tabs.

Der Effekt sollte einmal beim Mounten ausgeführt werden, daher eignet sich ein leeres oder stabiles Abhängigkeitsarray.

Eigenschaften von StorageEvent

Das Ereignisobjekt enthält key (welcher Schlüssel geändert wurde), oldValue und newValue (die Zeichenketten vor und nach der Änderung) sowie storageArea (das betroffene Speicherobjekt).

Ein null-Schlüssel mit null-Werten bedeutet, dass der Speicher vollständig geleert wurde.

Auf Ihre Schlüssel filtern

Das storage-Ereignis wird für jeden Schlüssel innerhalb der Origin ausgelöst. Ihr Handler sollte daher vor der Reaktion event.key === yourKey prüfen. Das Ignorieren nicht relevanter Schlüssel verhindert unnötige erneute Renderings.

Behandeln Sie außerdem den Fall, dass event.newValue null ist, also der Schlüssel entfernt wurde.

React-Zustand beim Ereignis aktualisieren

Wenn eine relevante Änderung eintrifft, parsen Sie event.newValue und rufen Ihren Setter auf, um den React-Zustand zu aktualisieren. Dadurch wird der zweite Tab mit der Änderung aus dem anderen Tab synchronisiert.

Zusammen mit einem useLocalStorage-Hook schließt dies den Synchronisierungskreislauf zwischen den Tabs.

Die Alternative BroadcastChannel

BroadcastChannel ermöglicht es Tabs derselben Origin, sich mit postMessage direkt Nachrichten zu senden. Das ist sauberer, als Speichereignisse zweckzuentfremden, und funktioniert auch ohne in localStorage zu schreiben.

Sie erstellen einen benannten Channel, senden Aktualisierungen und hören auf message-Ereignisse.

useSyncExternalStore für Speicher

React stellt useSyncExternalStore bereit, um nebenläufigkeitssicher externe Speicher zu abonnieren. Sie können dessen Subscribe-Funktion mit dem storage-Ereignis und dessen Snapshot mit einem Lesevorgang aus localStorage verbinden.

So werden Aktualisierungen des externen Speichers korrekt in das React-Rendering integriert.

Anwendungsfall: Abmeldung in allen Tabs

Ein klassischer Anwendungsfall ist die Abmeldung überall: Wenn ein Tab das Authentifizierungs-Flag löscht, erkennen die Speichereignisse in den anderen Tabs dies und leiten sie zum Anmeldebildschirm weiter.

So wird verhindert, dass ein veralteter Tab weiterhin authentifizierte Inhalte anzeigt.

Dark Mode zwischen Tabs synchronisieren

Auch das Theme eignet sich hervorragend: Wenn in einem Tab der Dark Mode aktiviert oder deaktiviert wird, wird die Änderung in localStorage geschrieben, das storage-Ereignis in den anderen Tabs ausgelöst und deren Theme-Zustand sofort entsprechend aktualisiert.

So erhält die Person unabhängig davon, zu welchem Tab sie wechselt, eine einheitliche Darstellung.

Alles zusammenführen

Die Synchronisierung zwischen Tabs besteht im Wesentlichen daraus, das storage-Ereignis abzuhören oder BroadcastChannel zu verwenden, auf Ihre Schlüssel zu filtern und den React-Zustand anhand des neuen Werts zu aktualisieren.

Für robuste, nebenläufigkeitssichere Abonnements ist useSyncExternalStore die moderne Wahl.

Schnelltest

Testen Sie Ihr Verständnis von Ereignissen zwischen Tabs.

Zusammenfassung

Sie haben gelernt, dass das storage-Ereignis in anderen Tabs ausgelöst wird, wie Sie darauf hören, nach Schlüssel filtern und den Zustand aktualisieren. Außerdem haben Sie die Alternativen BroadcastChannel und useSyncExternalStore kennengelernt.

Sie haben praktische Anwendungsfälle wie die Abmeldung in allen Tabs und den tabübergreifenden Dark Mode gesehen.

Häufig gestellte Fragen

Ist die Lektion „Storage-Ereignisse zwischen Tabs verarbeiten“ kostenlos?

Ja — der vollständige Text von „Storage-Ereignisse zwischen Tabs verarbeiten“ 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 „Storage-Ereignisse zwischen Tabs verarbeiten“?

Reagieren Sie mithilfe des storage-Ereignis-Listeners auf localStorage-Änderungen in anderen Browser-Tabs. 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 „Storage-Ereignisse zwischen Tabs verarbeiten“?

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