React Academy · leksjon

Suspense-grenser og prioritet ved strømming

Plasser Suspense-grenser for å styre hvilke HTML-biter som strømmes først, og når reserveinnhold blir til faktisk innhold.

Leksjon 2 av 413 trinn

Suspense-grenser og prioritet ved strømming er en gratis leksjon i React Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i React Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i React Academy inneholder totalt 4 leksjoner.

Suspense som en grense for strømming

Suspense-grenser er den grunnleggende enheten for strømmingsgranularitet. Hver Suspense-grense i komponenttreet oppretter en seksjon som kan strømmes uavhengig – React kan løse og strømme hver grense i sitt eget tempo, uavhengig av alle andre.

Skallet: Raskt, synkront innhold

Skallet består av alt utenfor Suspense-grenser – layouten, navigasjonen, bunnteksten og alt innhold som er tilgjengelig synkront. Skallet strømmes først og raskt, slik at brukerne får sidens struktur umiddelbart mens dataavhengige seksjoner lastes inn i bakgrunnen.

Fallback-innhold i den første HTML-en

Når React strømmer skallet, gjengis alle Suspense-grenser som ennå ikke har fått data, med sitt fallback-grensesnitt – vanligvis en lasteskjelettvisning eller en spinner. Dette fallback-innholdet inkluderes i den første HTML-responsen, slik at brukeren ser en lasteindikator umiddelbart i stedet for et tomt område.

Løse og erstatte fallback-innhold

Når dataene i en Suspense-grense blir klare, strømmer React den ferdige HTML-en sammen med et lite innebygd skript. Skriptet flytter det nylig strømmede innholdet fra et skjult template-element til riktig plassering i DOM-en, og erstatter fallback-innholdet uten å laste inn siden på nytt.

Mønsteret med innebygde skript

React bruker mønsteret med HTML-elementet template: Ferdig Suspense-innhold strømmes inn i en skjult template, og deretter kaller et skript en intern React-funksjon for å flytte innholdet fra templaten til riktig plassering i DOM-en. Dette muliggjør DOM-manipulering for utskiftingen uten behov for et JavaScript-rammeverk.

Nestede Suspense-grenser: Uavhengige tidslinjer

Nestede Suspense-grenser har uavhengige tidslinjer for når de blir klare. En indre Suspense-grense kan bli klar før den ytre grensen – React strømmer det indre innholdet så snart det er klart, uavhengig av om den ytre grensen er ferdig. Dette maksimerer parallelliteten i datalastingen.

Plasseringsstrategi: Hva skal plasseres hvor

En effektiv plassering av Suspense innebærer å legge trege, dataavhengige komponenter inne i Suspense-grenser og raskt, statisk eller synkront tilgjengelig innhold utenfor. Navigasjonsfelt, hero-seksjoner med statisk tekst og bunntekster bør ligge utenfor. Produktlister, brukerdashbord og kommentarstrømmer bør ligge innenfor.

Strømmingsrekkefølge: Ikke nødvendigvis dokumentrekkefølgen

React strømmer Suspense-grenser etter hvert som de blir klare – ikke nødvendigvis i den rekkefølgen de vises i dokumentet. En seksjon under folden kan bli klar før en seksjon over folden hvis den krever mindre data. React håndterer innsettingen i DOM-en riktig uavhengig av strømmingsrekkefølgen.

Prioritetssignaler og brukerinteraksjon

React 18s selektive hydrering reagerer på brukerinteraksjon: Hvis brukeren klikker på eller holder markøren over en Suspense-grense som ennå ikke er hydrert, prioriterer React hydrering av denne grensen. Dermed oppleves brukerinteraksjoner som responsive selv om andre deler av siden fortsatt hydreres.

Unngå for finmaskede grenser

Flere Suspense-grenser gir større fleksibilitet ved strømming, men for mange grenser medfører ekstra kostnader på grunn av innebygde skript for utskifting. En praktisk tommelfingerregel er å omgi hele «seksjoner» (innhold over folden, sidestolpe og strømmen under folden) i stedet for enkeltkomponenter. Én til tre Suspense-grenser per side er ofte et godt kompromiss.

Mål effekten av strømming med Chrome DevTools

I Network-fanen i Chrome DevTools kan du bruke «Preserve log» og følge med på responsen mens den strømmes: HTML-dokumentet vokser i deler. Performance-fanen viser markører for FCP og LCP – sammenlign strømmende og ikke-strømmende bygg for å måle forbedringen. Begrens hastigheten til Fast 3G for å gjøre effekten tydeligere.

Suspense-fallback i strømmende HTML

Hva skjer med fallback-innholdet til en Suspense-grense i den første strømmende HTML-responsen?

Oppsummering av leksjonen

Suspense-grenser deler React-treet inn i seksjoner som kan strømmes uavhengig. Skallet (utenfor Suspense) strømmes først; fallback-innhold vises umiddelbart for grenser som fortsatt behandles; og ferdig innhold erstatter fallback-innholdet via innebygde skript. Nestede grenser har uavhengige tidslinjer. Plasser grenser på seksjonsnivå for optimal strømmingsgranularitet, og la Reacts prioritetssystem håndtere rekkefølgen på hydrering som utløses av interaksjon.

Gratis å komme i gang

Lær deg React med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
88
Leksjoner
324

Ofte stilte spørsmål

Er leksjonen «Suspense-grenser og prioritet ved strømming» gratis?

Ja – hele teksten i «Suspense-grenser og prioritet ved strømming» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av React Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i React Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Suspense-grenser og prioritet ved strømming»?

Plasser Suspense-grenser for å styre hvilke HTML-biter som strømmes først, og når reserveinnhold blir til faktisk innhold. Du øver på React Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med React Academy?

Ingen tidligere erfaring er nødvendig. React Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Suspense-grenser og prioritet ved strømming»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne React Academy-leksjonen?

Ja. Alle React Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Strømming i React 18: Slik fungerer renderToPipeableStream
  2. Suspense-grenser og prioritet ved strømming
  3. Progressiv hydrering med selektiv hydrering
  4. Måle effekten av strømming: FCP, TTI og LCP
← Tilbake til React Academy