0Pricing
React Academy · Lektion

Subscriptions auf Browser-APIs

Erstellen Sie mit useSyncExternalStore Hooks, die matchMedia, navigator.onLine, den Verlauf von window und localStorage abonnieren.

Subscriptions auf Browser-APIs 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.

Auf matchMedia subscriben

Browser-Media-Queries sind perfekte externe Stores. Sie können eine matchMedia-Abfrage für den Dark Mode oder einen Breakpoint abonnieren und die Komponente jedes Mal neu rendern, wenn sich der Match-Status ändert.

Die subscribe-Funktion fügt der MediaQueryList einen Change-Listener hinzu, und getSnapshot gibt den aktuellen booleschen Wert von matches zurück. So erhalten Sie reaktiven Zugriff auf responsive Bedingungen.

Ein useMediaQuery-Hook

Wenn Sie diese Logik in einen useMediaQuery-Hook kapseln, können Komponenten mit einem einzigen Aufruf abfragen, ob eine Query zutrifft. Der Hook erstellt für eine bestimmte Query-Zeichenfolge ein stabiles subscribe und getSnapshot.

Das ergibt ein übersichtliches, wiederverwendbares Grundelement für responsives Verhalten, das dank useSyncExternalStore auch beim nebenläufigen Rendering konsistent bleibt.

Status von navigator.onLine

Der Browser stellt Online- und Offline-Events sowie navigator.onLine bereit. Wenn Sie diese Events abonnieren und die Eigenschaft lesen, erhalten Sie den aktuellen Verbindungsstatus innerhalb von React.

getSnapshot gibt navigator.onLine zurück, und subscribe registriert Listener für die Online- und Offline-Events, sodass die Komponente bei Änderungen der Verbindung aktualisiert wird.

Ein useOnlineStatus-Hook

Wenn Sie diese Logik in einem useOnlineStatus-Hook bündeln, kann jede Komponente Offline-Banner anzeigen oder Aktionen deaktivieren, sobald die Netzwerkverbindung abbricht. Die offizielle React-Dokumentation verwendet genau dieses Beispiel, um den Hook zu veranschaulichen.

Es handelt sich um einen kleinen, aber anschaulichen Fall, in dem ein externes Browser-Signal sauber auf einen reaktiven Zustand abgebildet wird.

Auf Änderungen von window.location subscriben

Sie können Navigationsänderungen überwachen, indem Sie auf das popstate-Event hören und window.location in getSnapshot lesen. Darauf basieren einfache eigene Router auf Grundlage der History API.

Da pushState kein popstate auslöst, senden eigene Router häufig ein eigenes Event, damit der Snapshot auch bei programmgesteuerter Navigation aktualisiert wird.

localStorage zwischen Tabs über das storage-Event

Das storage-Event wird in anderen Tabs ausgelöst, wenn sich localStorage ändert. Dadurch eignet sich localStorage als abonnierbarer externer Store. getSnapshot liest den aktuellen Wert, und subscribe überwacht storage-Events.

Das ermöglicht die Synchronisierung zwischen Tabs: Wenn Sie einen Wert in einem Tab aktualisieren, werden Komponenten in einem anderen Tab reaktiv aktualisiert.

deviceOrientation

Das deviceorientation-Event meldet die physische Neigung eines Geräts. Wenn Sie es abonnieren und die neuesten Winkel in getSnapshot lesen, werden Bewegungsdaten zu reaktivem Zustand.

Das ist nützlich für Parallax-Effekte oder interaktive Visualisierungen, die darauf reagieren, wie ein Smartphone gehalten wird.

Ein Wrapper für IntersectionObserver

IntersectionObserver informiert Sie, wenn ein Element in den Viewport hinein- oder aus ihm herauswandert. Sie können ihn kapseln, sodass subscribe den Observer erstellt und getSnapshot den aktuellen Wert von isIntersecting zurückgibt.

So erhalten Sie ein reaktives isVisible-Flag zum verzögerten Laden von Bildern, zum Auslösen von Animationen oder zum Implementieren von Markierungen für endloses Scrollen.

ResizeObserver für Elementgrößen

ResizeObserver meldet Änderungen der Elementgröße. Durch eine Kapselung kann subscribe ein Element beobachten und getSnapshot dessen aktuelle Abmessungen zurückgeben, sodass Komponenten präzise auf Layoutänderungen reagieren.

Das ist effizienter und genauer als das Abhören von window resize, wenn es um ein bestimmtes Element und nicht um den gesamten Viewport geht.

Zu useWindowSize zusammensetzen

Sie können das Resize-Event mit dem Hook kombinieren und so einen useWindowSize-Hook erstellen, der die aktuelle Breite und Höhe zurückgibt. subscribe registriert einen Resize-Listener, und getSnapshot liest die Fensterabmessungen.

Denken Sie daran, einen stabilen Snapshot zurückzugeben. Speichern Sie das Größenobjekt zwischen, damit unveränderte Abmessungen keine erneuten Render-Vorgänge auslösen und die Kombination effizient bleibt.

Kurzer Test: useMediaQuery-Implementierung

Überlegen Sie, wie ein useMediaQuery-Hook den Store-Hook verwendet.

Zusammenfassung: Abonnieren von Browser-APIs

Viele Browser-APIs sind externe Stores, die Sie mit useSyncExternalStore anbinden können: matchMedia für Breakpoints, navigator.onLine für die Konnektivität, location und storage für Navigation und tabübergreifende Synchronisierung sowie Orientation-, Intersection- und ResizeObserver.

Jede Implementierung folgt demselben Muster: ein subscribe, das Listener registriert und entfernt, sowie ein stabiler getSnapshot. Setzen Sie sie zu Hooks wie useMediaQuery, useOnlineStatus und useWindowSize zusammen.

Häufig gestellte Fragen

Ist die Lektion „Subscriptions auf Browser-APIs“ kostenlos?

Ja — der vollständige Text von „Subscriptions auf Browser-APIs“ 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 „Subscriptions auf Browser-APIs“?

Erstellen Sie mit useSyncExternalStore Hooks, die matchMedia, navigator.onLine, den Verlauf von window und localStorage abonnieren. 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 „Subscriptions auf Browser-APIs“?

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. Das Problem bei Subscriptions auf externe Stores
  2. useSyncExternalStore: API und Parameter
  3. Subscriptions auf Browser-APIs
  4. Einen eigenen Store mit useSyncExternalStore erstellen
← Zurück zu React Academy