Progresywna hydratacja z selektywną hydratacją
Użyją Państwo selektywnej hydratacji z React 18, aby w pierwszej kolejności hydratować komponenty, z którymi użytkownik wchodzi w interakcję.
Progresywna hydratacja z selektywną hydratacją to bezpłatna lekcja React Academy na CoddyKit. To lekcja 3 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.
Czym jest hydratacja selektywna?
Hydratacja selektywna to funkcja React 18, która pozwala Reactowi rozpocząć hydratację komponentów, gdy tylko dotrze ich kod JavaScript, bez oczekiwania na pobranie kodu JavaScript całej strony. Każda niezależnie wydzielona sekcja przechodzi hydratację w momencie załadowania swojego pakietu, a nie wszystkie sekcje jednocześnie.
React 18: bez hydratacji typu „big bang”
Przed React 18 hydratacja działała na zasadzie „wszystko albo nic” — React musiał pobrać cały kod JavaScript i przeprowadzić hydratację całego drzewa, zanim jakakolwiek część strony stała się interaktywna. React 18 znosi to ograniczenie: fragmenty drzewa przechodzą hydratację niezależnie, gdy ich kod i dane stają się dostępne.
Interakcja użytkownika nadaje priorytet hydratacji
Jeśli użytkownik kliknie granicę Suspense, nad którą jeszcze nie zakończyła się hydratacja, lub wejdzie z nią w interakcję, React natychmiast nada priorytet hydratacji tego poddrzewa przed wykonaniem jakiejkolwiek innej oczekującej pracy związanej z hydratacją. Oznacza to, że element, z którego użytkownik próbuje skorzystać, stanie się interaktywny jako pierwszy, nawet jeśli nie znajduje się na początku dokumentu.
React.lazy i Suspense do dzielenia kodu
Połączenie React.lazy z importami dynamicznymi i granicami Suspense umożliwia selektywną hydratację komponentów wydzielonych w ramach dzielenia kodu. Przeglądarka najpierw pobiera główny pakiet JavaScript i natychmiast przeprowadza hydratację powłoki. Każdy komponent ładowany leniwie przechodzi hydratację po pobraniu swojego chunka — stopniowo, w miarę pobierania kolejnych chunków przez przeglądarkę.
Wpływ na doświadczenie użytkownika
W rezultacie treść widoczna bez przewijania staje się interaktywna, zanim kod JavaScript znajdujący się poniżej pierwszego widoku zostanie w ogóle pobrany. Użytkownik może korzystać z nawigacji i głównego CTA, podczas gdy kanał komentarzy i widget rekomendacji nadal pobierają swoje chunki JavaScript.
Mierzenie wpływu
Selektywna hydratacja zmniejsza Total Blocking Time (TBT), czyli całkowity czas blokowania — kluczową metrykę wydajności hydratacji. Na karcie Performance w Chrome DevTools długie zadania (Long Tasks, trwające ponad 50 ms) są wyróżnione na czerwono. Przed wprowadzeniem selektywnej hydratacji można zobaczyć jedno długie zadanie trwające 300 ms, związane z pełną hydratacją; po jej wprowadzeniu widać kilka mniejszych zadań rozłożonych w czasie.
Unikanie wczesnych importów na poziomie głównym
Antywzorzec podważający skuteczność selektywnej hydratacji polega na importowaniu wszystkich komponentów na początku aplikacji: import Footer from './Footer'. Zmusza to przeglądarkę do pobrania, przeanalizowania i wykonania kodu Footer, zanim rozpocznie się jakakolwiek hydratacja. Należy zastąpić importy komponentów znajdujących się poniżej pierwszego widoku, umieszczone na poziomie głównym, konstrukcją React.lazy + importami dynamicznymi.
Importy dynamiczne dla treści poniżej pierwszego widoku
W przypadku komponentów wyświetlanych poniżej początkowego obszaru widoku należy użyć const Footer = React.lazy(() => import('./Footer')). Należy opakować je w Suspense z prostym fallbackiem. Przeglądarka obniży priorytet pobierania pakietu Footer do czasu zakończenia hydratacji treści widocznej bez przewijania, co w naturalny sposób poprawi TBT.
Współdziałanie strumieniowania i selektywnej hydratacji
Strumieniowanie i selektywna hydratacja uzupełniają się: strumieniowanie wysyła fragmenty HTML, aby poprawić FCP i LCP, natomiast selektywna hydratacja przetwarza fragmenty JavaScriptu, aby poprawić TTI i TBT. Razem odpowiadają zarówno za szybkie wyświetlenie treści, jak i za szybkie zapewnienie interaktywności.
Selektywna hydratacja i React Server Components
React Server Components posuwają selektywną hydratację jeszcze dalej: komponenty serwerowe nie generują w ogóle kodu JavaScript dla klienta. Hydratacji wymagają tylko komponenty klienckie oznaczone ciągiem "use client". Zmniejsza to całkowitą ilość kodu JavaScript wymagającego hydratacji, dzięki czemu selektywna hydratacja staje się jeszcze skuteczniejsza.
Praktyczna architektura selektywnej hydratacji
Praktyczny wzorzec polega na użyciu renderToPipeableStream do strumieniowania HTML, objęciu strony głównym wywołaniem hydrateRoot zamiast createRoot w celu włączenia trybu hydratacji, użyciu React.lazy dla wszystkich sekcji znajdujących się poniżej pierwszego widoku oraz opakowaniu każdej sekcji w granicę Suspense. React zajmie się resztą automatycznie.
Interakcja użytkownika a selektywna hydratacja
Jak interakcja użytkownika wpływa na priorytet selektywnej hydratacji w React 18?
Podsumowanie lekcji
Selektywna hydratacja pozwala Reactowi stopniowo przeprowadzać hydratację poddrzew komponentów w miarę docierania ich kodu JavaScript, zamiast czekać na pobranie całego pakietu. Interakcje użytkownika nadają priorytet hydratacji wskazanego poddrzewa. React.lazy + importy dynamiczne dla treści znajdujących się poniżej pierwszego widoku, połączone z granicami Suspense, umożliwiają ten stopniowy model. Selektywna hydratacja i strumieniowe SSR to uzupełniające się techniki, które razem poprawiają zarówno dostarczanie treści, jak i wydajność interaktywności.
Często zadawane pytania
Czy lekcja „Progresywna hydratacja z selektywną hydratacją” jest bezpłatna?
Tak — pełny tekst „Progresywna hydratacja z selektywną hydratacją” 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 „Progresywna hydratacja z selektywną hydratacją”?
Użyją Państwo selektywnej hydratacji z React 18, aby w pierwszej kolejności hydratować komponenty, z którymi użytkownik wchodzi w interakcję. Ć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 3 z 4.
Ile czasu zajmuje lekcja „Progresywna hydratacja z selektywną hydratacją”?
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
- Strumieniowanie w React 18: jak działa renderToPipeableStream
- Granice Suspense i priorytet strumieniowania
- Progresywna hydratacja z selektywną hydratacją
- Pomiar wpływu strumieniowania: FCP, TTI i LCP