Suspense-Grenzen und Streaming-Priorität
Platzieren Sie Suspense-Grenzen, um zu steuern, welche HTML-Abschnitte zuerst gestreamt werden und wann Fallbacks zu Inhalten werden.
Suspense-Grenzen und Streaming-Priorität 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.
Suspense als Streaming-Trennlinie
Suspense-Boundaries sind die grundlegende Einheit für die Granularität des Streamings. Jede Suspense-Boundary in Ihrem Komponentenbaum erzeugt einen unabhängig streambaren Abschnitt — React kann jede Boundary in ihrem eigenen Tempo auflösen und streamen, unabhängig von allen anderen.
Die Shell: Schnelle, synchrone Inhalte
Die Shell umfasst alles außerhalb von Suspense-Boundaries — das Layout, die Navigation, die Fußzeile und alle synchron verfügbaren Inhalte. Die Shell wird zuerst und schnell gestreamt. Dadurch sehen Benutzer sofort die Seitenstruktur, während datenabhängige Abschnitte im Hintergrund geladen werden.
Fallbacks im initialen HTML
Wenn React die Shell streamt, wird jede Suspense-Boundary, deren Daten noch nicht verfügbar sind, mit ihrer Fallback-UI gerendert — typischerweise mit einem Lade-Skeleton oder einem Spinner. Dieser Fallback ist in der initialen HTML-Antwort enthalten. Der Benutzer sieht daher sofort einen Ladeindikator statt eines leeren Bereichs.
Fallbacks auflösen und ersetzen
Sobald die Daten einer Suspense-Boundary aufgelöst sind, streamt React das aufgelöste HTML zusammen mit einem kleinen Inline-Skript. Dieses Skript verschiebt die neu gestreamten Inhalte aus einem ausgeblendeten Template-Element an die richtige Position im DOM und ersetzt den Fallback, ohne die gesamte Seite neu zu laden.
Das Muster mit Inline-Skripten
React verwendet das Muster des HTML-Template-Elements: Aufgelöste Suspense-Inhalte werden in ein ausgeblendetes Template gestreamt. Anschließend ruft ein Skript eine interne React-Funktion auf, die den Template-Inhalt an die richtige Position im DOM verschiebt. Dadurch ist für das Ersetzen keine DOM-Manipulation durch ein JavaScript-Framework erforderlich.
Verschachteltes Suspense: Unabhängige Zeitabläufe
Verschachtelte Suspense-Boundaries haben unabhängige Auflösungszeitpunkte. Eine innere Suspense-Boundary kann vor ihrer äußeren Boundary aufgelöst werden — React streamt die inneren Inhalte, sobald sie bereit sind, unabhängig davon, ob die äußere Boundary bereits aufgelöst wurde. So wird die Parallelität beim Laden der Daten maximiert.
Platzierungsstrategie: Was wohin gehört
Bei einer effektiven Platzierung von Suspense werden langsame, datenabhängige Komponenten innerhalb von Suspense-Boundaries und schnelle, statische oder synchron verfügbare Inhalte außerhalb platziert. Navigationsleisten, Hero-Abschnitte mit statischem Text und Fußzeilen gehören nach außen. Produktlisten, Benutzer-Dashboards und Kommentar-Feeds gehören nach innen.
Reihenfolge des Streamings: Nicht unbedingt Dokumentreihenfolge
React streamt Suspense-Boundaries, sobald sie aufgelöst sind — nicht unbedingt in der Reihenfolge, in der sie im Dokument erscheinen. Ein Abschnitt weiter unten im sichtbaren Dokumentbereich kann vor einem Abschnitt weiter oben aufgelöst werden, wenn dafür weniger Daten benötigt werden. React fügt die Inhalte unabhängig von der Streaming-Reihenfolge korrekt in das DOM ein.
Prioritätshinweise und Benutzerinteraktion
Die selektive Hydration von React 18 reagiert auf Benutzerinteraktionen: Wenn der Benutzer auf eine Suspense-Boundary klickt oder mit ihr interagiert, die noch nicht hydriert wurde, priorisiert React die Hydration dieser Boundary. Dadurch reagieren Benutzerinteraktionen auch dann unmittelbar, wenn andere Teile der Seite noch hydriert werden.
Zu kleinteilige Boundaries vermeiden
Mehr Suspense-Boundaries bieten mehr Flexibilität beim Streaming, aber zu viele Boundaries verursachen durch zusätzliche Inline-Skripte für das Ersetzen mehr Overhead. Als praktische Richtlinie sollten Sie ganze „Abschnitte“ kapseln — etwa Inhalte im sichtbaren Bereich, die Seitenleiste oder einen Feed weiter unten — statt einzelne Komponenten. Ein bis drei Suspense-Boundaries pro Seite sind häufig ein guter Kompromiss.
Streaming-Auswirkungen mit Chrome DevTools messen
Verwenden Sie im Netzwerk-Tab von Chrome DevTools die Option „Preserve log“ und beobachten Sie das Streaming der Antwort: Das HTML-Dokument wächst in Blöcken. Der Tab „Performance“ zeigt die Marker für FCP und LCP. Vergleichen Sie Streaming- und nicht streamende Builds, um die Verbesserung zu quantifizieren. Begrenzen Sie die Verbindung auf Fast 3G, um den Effekt zu verstärken.
Suspense-Fallback im Streaming-HTML
Was geschieht mit dem Fallback einer Suspense-Boundary in der initialen Streaming-HTML-Antwort?
Zusammenfassung der Lektion
Suspense-Boundaries teilen Ihren React-Baum in unabhängig streambare Abschnitte auf. Die Shell außerhalb von Suspense wird zuerst gestreamt; für ausstehende Boundaries werden Fallbacks sofort angezeigt; aufgelöste Inhalte ersetzen die Fallbacks über Inline-Skripte. Verschachtelte Boundaries haben unabhängige Zeitabläufe. Platzieren Sie Boundaries auf Abschnittsebene, um eine optimale Streaming-Granularität zu erreichen, und überlassen Sie Reacts Prioritätssystem die Reihenfolge der durch Interaktionen ausgelösten Hydration.
Häufig gestellte Fragen
Ist die Lektion „Suspense-Grenzen und Streaming-Priorität“ kostenlos?
Ja — der vollständige Text von „Suspense-Grenzen und Streaming-Priorität“ 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 „Suspense-Grenzen und Streaming-Priorität“?
Platzieren Sie Suspense-Grenzen, um zu steuern, welche HTML-Abschnitte zuerst gestreamt werden und wann Fallbacks zu Inhalten werden. 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 „Suspense-Grenzen und Streaming-Priorität“?
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
- Streaming in React 18: So funktioniert renderToPipeableStream
- Suspense-Grenzen und Streaming-Priorität
- Progressive Hydrierung mit selektiver Hydrierung
- Streaming-Auswirkungen messen: FCP, TTI und LCP