React Academy · Lekcja

Granice Suspense i priorytet strumieniowania

Umieszczą Państwo granice Suspense, aby kontrolować kolejność przesyłania fragmentów HTML oraz moment, w którym elementy zastępcze stają się treścią.

Lekcja 2 z 413 kroki

Granice Suspense i priorytet strumieniowania to bezpłatna lekcja React Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Suspense jako granica strumieniowania

Granice Suspense są podstawową jednostką podziału strumieniowania. Każda granica Suspense w drzewie komponentów tworzy niezależnie strumieniowaną sekcję — React może rozwiązywać i strumieniować każdą granicę we własnym tempie, niezależnie od pozostałych.

Powłoka: szybka, synchroniczna treść

Powłoka obejmuje wszystko, co znajduje się poza granicami Suspense — układ strony, nawigację, stopkę i wszelką treść dostępną synchronicznie. Powłoka jest strumieniowana jako pierwsza i bardzo szybko, dzięki czemu użytkownik od razu otrzymuje strukturę strony, podczas gdy sekcje zależne od danych są ładowane w tle.

Fallbacki w początkowym kodzie HTML

Podczas strumieniowania powłoki przez React każda granica Suspense, której dane nie są jeszcze dostępne, jest renderowana jako jej fallback — zazwyczaj szkielet ładowania lub wskaźnik. Ten fallback jest zawarty w początkowej odpowiedzi HTML, więc użytkownik od razu widzi wskaźnik ładowania zamiast pustego miejsca.

Rozwiązywanie i zastępowanie fallbacków

Gdy dane granicy Suspense zostaną rozwiązane, React strumieniuje wyrenderowany kod HTML wraz z krótkim skryptem wbudowanym w dokument. Skrypt ten przenosi nowo przesłaną treść z ukrytego elementu template na właściwe miejsce w DOM, zastępując fallback bez pełnego przeładowania strony.

Wzorzec z wbudowanym skryptem

React korzysta ze wzorca z elementem HTML template: rozwiązana treść Suspense jest strumieniowana do ukrytego elementu template, a następnie skrypt wywołuje wewnętrzną funkcję Reacta, aby przenieść zawartość elementu template na właściwe miejsce w DOM. Umożliwia to wymianę zawartości DOM bez używania frameworka JavaScript.

Zagnieżdżone Suspense: niezależne osie czasu

Zagnieżdżone granice Suspense mają niezależne osie czasu rozwiązywania. Wewnętrzna granica Suspense może zostać rozwiązana przed granicą zewnętrzną — React strumieniuje jej zawartość, gdy tylko jest gotowa, niezależnie od tego, czy granica zewnętrzna została już rozwiązana. Maksymalizuje to równoległość ładowania danych.

Strategia rozmieszczania: co i gdzie umieścić

Skuteczne rozmieszczenie Suspense polega na umieszczaniu wolnych komponentów zależnych od danych wewnątrz granic Suspense, a szybkiej, statycznej lub dostępnej synchronicznie treści na zewnątrz. Paski nawigacji, sekcje hero ze statycznym tekstem i stopki powinny znajdować się na zewnątrz. Listy produktów, panele użytkownika i kanały komentarzy powinny znajdować się wewnątrz.

Kolejność strumieniowania: niekoniecznie kolejność w dokumencie

React strumieniuje granice Suspense w miarę ich rozwiązywania — niekoniecznie w kolejności, w której pojawiają się w dokumencie. Sekcja znajdująca się niżej na stronie może zostać rozwiązana przed sekcją widoczną bez przewijania, jeśli wymaga mniejszej ilości danych. React prawidłowo obsługuje wstawianie do DOM niezależnie od kolejności strumieniowania.

Wskazówki dotyczące priorytetu i interakcja użytkownika

Selektywna hydratacja w React 18 reaguje na interakcje użytkownika: jeśli użytkownik kliknie granicę Suspense, nad którą jeszcze nie zakończyła się hydratacja, lub najedzie na nią kursorem, React w pierwszej kolejności nada priorytet hydratacji tej granicy. Dzięki temu interakcje użytkownika pozostają responsywne, nawet gdy inne części strony nadal przechodzą hydratację.

Unikanie nadmiernie drobnych granic

Większa liczba granic Suspense zapewnia większą elastyczność strumieniowania, ale zbyt wiele granic zwiększa narzut związany z wbudowanymi skryptami zastępującymi treść. Praktyczna zasada mówi, aby obejmować granicami całe „sekcje” (treść widoczną bez przewijania, pasek boczny, kanał poniżej pierwszego widoku), a nie pojedyncze komponenty. Od jednej do trzech granic Suspense na stronę to często optymalny kompromis.

Mierzenie wpływu strumieniowania za pomocą Chrome DevTools

Na karcie Network w Chrome DevTools włącz „Preserve log” i obserwuj strumieniowanie odpowiedzi: dokument HTML jest odbierany w kolejnych fragmentach. Karta Performance pokazuje znaczniki FCP i LCP — porównaj wersje ze strumieniowaniem i bez niego, aby zmierzyć poprawę. Ustaw ograniczenie Fast 3G, aby wyraźniej zobaczyć ten efekt.

Fallback Suspense w strumieniowanym kodzie HTML

Co dzieje się z fallbackiem granicy Suspense w początkowej odpowiedzi HTML przesyłanej strumieniowo?

Podsumowanie lekcji

Granice Suspense dzielą drzewo Reacta na niezależnie strumieniowane sekcje. Powłoka (znajdująca się poza Suspense) jest strumieniowana jako pierwsza; fallbacki pojawiają się natychmiast dla granic oczekujących na dane; rozwiązana treść zastępuje fallbacki za pomocą wbudowanych skryptów. Zagnieżdżone granice mają niezależne osie czasu. Aby uzyskać optymalną ziarnistość strumieniowania, należy umieszczać granice na poziomie sekcji i pozwolić systemowi priorytetów Reacta obsługiwać kolejność hydratacji wynikającą z interakcji.

Bezpłatny start

Ucz się React dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
88
Lekcje
324

Często zadawane pytania

Czy lekcja „Granice Suspense i priorytet strumieniowania” jest bezpłatna?

Tak — pełny tekst „Granice Suspense i priorytet strumieniowania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Granice Suspense i priorytet strumieniowania”?

Umieszczą Państwo granice Suspense, aby kontrolować kolejność przesyłania fragmentów HTML oraz moment, w którym elementy zastępcze stają się treścią. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Granice Suspense i priorytet strumieniowania”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Strumieniowanie w React 18: jak działa renderToPipeableStream
  2. Granice Suspense i priorytet strumieniowania
  3. Progresywna hydratacja z selektywną hydratacją
  4. Pomiar wpływu strumieniowania: FCP, TTI i LCP
← Powrót do React Academy