Next.js 15 i full stack (App Router + Server Actions) · Lektion

Streaming af UI med Suspense og loading states

Forbedr den oplevede ydeevne ved at streame server-renderet UI med React Suspense, loading.tsx-filer og skeletons, så brugerne ser indhold hurtigere.

Lektion 4 af 413 trin

Streaming af UI med Suspense og loading states er en gratis Next.js 15 i full stack (App Router + Server Actions)-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Next.js 15 i full stack (App Router + Server Actions), og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Next.js 15 i full stack (App Router + Server Actions)-kurset indeholder 4 lektioner i alt.

Problemet med vandfald

Hvis en side venter på hvert datahentningskald, før den gengives, stirrer brugerne på en tom skærm. Streaming lader serveren sende de færdige dele af siden med det samme og udfylde langsomme dele, efterhånden som de bliver færdige.

Hvad er streaming-SSR?

Next.js med App Router kan streame HTML i bidder. Skallen og de hurtige komponenter kommer først; langsomme, dataafhængige sektioner streames, når de er klar, hvilket forbedrer Time to First Byte og den oplevede hastighed.

Grundlæggende om React Suspense

Suspense omslutter en komponent, der måske ikke er klar, og viser en fallback, indtil den er det. Resten af siden gengives uden at vente.

import { Suspense } from 'react';
<Suspense fallback={<p>Loading...</p>}>
  <SlowComponent />
</Suspense>

Asynkrone serverkomponenter

I App Router kan en serverkomponent være async og afvente data. Hvis du omslutter den med Suspense, kan siden streame, mens datahentningen afsluttes.

async function Reviews() {
  const data = await getReviews();
  return <ReviewList items={data} />;
}

Streaming af en langsom sektion

Gengiv sidens skal med det samme, og stream den langsomme del. Brugerne kan interagere med resten, mens anmeldelser indlæses.

export default function Page() {
  return (
    <main>
      <Header />
      <Suspense fallback={<ReviewsSkeleton />}>
        <Reviews />
      </Suspense>
    </main>
  );
}

Konventionen med loading.tsx

En loading.tsx-fil ved siden af en rute omslutter automatisk rutens side i Suspense. Dens eksport vises med det samme, mens sidens data indlæses.

// app/dashboard/loading.tsx
export default function Loading() {
  return <DashboardSkeleton />;
}

Opbygning af et skelet

Et skelet efterligner det endelige layout med grå pladsholdere, hvilket reducerer layoutforskydning og signalerer, at indholdet er på vej.

function ReviewsSkeleton() {
  return (
    <div className="animate-pulse space-y-2">
      <div className="h-4 bg-gray-200 rounded" />
      <div className="h-4 bg-gray-200 rounded w-3/4" />
    </div>
  );
}

Parallel datahentning

Undgå sekventielle await-udtryk, der skaber vandfald. Flere Suspense-grænser lader uafhængige sektioner hente data parallelt og streame, når hver sektion bliver færdig.

<Suspense fallback={<A />}><Sales /></Suspense>
<Suspense fallback={<B />}><Traffic /></Suspense>

Finkornede grænser

Placér Suspense omkring den mindste langsomme enhed, ikke hele siden. Finkornede grænser betyder, at mere af brugergrænsefladen bliver interaktiv tidligere.

Streaming kontra statisk gengivelse

Streaming er velegnet til personlige eller langsomme data. For indhold, der sjældent ændres, er statisk generering eller caching stadig hurtigere. Kombinér begge dele: Cache det, du kan, og stream resten.

Bedste praksis

Stream effektivt:

  • O单slut langsomme asynkrone serverkomponenter med Suspense
  • Brug loading.tsx til fallback på ruteniveau
  • Vis skeletter for at reducere layoutforskydning
  • Brug parallelle grænser for at undgå vandfald

Hurtigt tjek

Test din viden om streaming.

Opsummering

Du har lært at streame brugergrænseflader:

  • Streaming-SSR sender færdig HTML først og udfylder langsomme dele senere
  • Omlæg asynkrone komponenter med Suspense og en fallback
  • Brug loading.tsx til automatiske fallbacks for ruter
  • Vis skeletter, og brug parallelle grænser

Dine sider føles nu hurtige, selv med langsomme data.

Gratis at komme i gang

Lær TypeScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
22
Lektioner
88

Ofte stillede spørgsmål

Er lektionen “Streaming af UI med Suspense og loading states” gratis?

Ja — alle 3 lektioner i læringssporet Next.js 15 i full stack (App Router + Server Actions), inklusive “Streaming af UI med Suspense og loading states”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Next.js 15 i full stack (App Router + Server Actions)-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Streaming af UI med Suspense og loading states”?

Forbedr den oplevede ydeevne ved at streame server-renderet UI med React Suspense, loading.tsx-filer og skeletons, så brugerne ser indhold hurtigere. Du øver dig i Next.js 15 i full stack (App Router + Server Actions) med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Next.js 15 i full stack (App Router + Server Actions)?

Der kræves ingen tidligere erfaring. Next.js 15 i full stack (App Router + Server Actions) på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Streaming af UI med Suspense og loading states”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Next.js 15 i full stack (App Router + Server Actions)-lektion?

Ja. Alle Next.js 15 i full stack (App Router + Server Actions)-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Optimering af billeder og skrifttyper
  2. Analyse af bundle-størrelse
  3. Avancerede cachingstrategier
  4. Streaming af UI med Suspense og loading states
← Tilbage til Next.js 15 i full stack (App Router + Server Actions)