React Server Components uitgelegd

React Server Components uitgelegd: use client, Server Actions, Suspense | We.Inc

React Server Components in gewone taal: een diagram van de grens, de regels voor "use client", data ophalen, server actions voor formulieren met useActionState, streamen met Suspense en oplossingen voor veelvoorkomende fouten.

React Server Components uitgelegd

React Server Components renderen op de server en sturen kant-en-klare UI naar de browser, niet hun JavaScript. Ze kunnen direct op data wachten met await en geheimen gebruiken. Alles wat interactief is, komt in een Client Component, een bestand dat begint met "use client". Formulieren kunnen server functions aanroepen die gemarkeerd zijn met "use server", en Suspense streamt trage delen later binnen.

De drie directives en hooks die u nodig hebt

Begin met het diagram: blauwe vakken blijven op de server, oranje vakken gaan ook naar de browser. Kopieer daarna de patronen voor data, formulieren en streamen, en gebruik de fouttabel wanneer de build klaagt.

Veelgestelde vragen

Zijn Server Components hetzelfde als server-side rendering?

Nee. Server-side rendering maakt van elke component HTML voor de eerste keer laden en stuurt de JavaScript nog steeds mee. Een Server Component stuurt nooit zijn JavaScript mee; alleen zijn uitvoer. Client Components worden voor de eerste keer laden nog steeds op de server gerenderd.

Heb ik Next.js nodig om Server Components te gebruiken?

Ze hebben een framework of bundler nodig die ze ondersteunt. De Next.js App Router wordt het meest gebruikt; een paar andere, zoals Waku, ondersteunen ze ook.

Kan een Client Component een Server Component importeren?

Nee, een import vanuit een clientbestand trekt de module mee in de clientbundel. Geef de Server Component in plaats daarvan als children of een andere prop door vanuit een parent die een Server Component is.

Wat is het verschil tussen server actions en server functions?

React noemt elke functie die gemarkeerd is met "use server" nu een server function. Wanneer er een wordt gebruikt als form action of binnen een transition wordt aangeroepen, heet die vaak een server action. Next.js gebruikte de term server actions als eerste.

Werkt useActionState zonder JavaScript?

Het formulier post vóór hydration nog steeds naar de server function, dus het wordt verzonden. De pending-toestand en het bericht op de pagina hebben JavaScript nodig, dus zorg dat de server in beide gevallen een bruikbare pagina teruggeeft.

Waarom dit model een website helpt

Beveiligingschecklist voor server functions

Wat draait waar

Waar elk onderdeel kan draaien

Server en Client Components

Een Server Component die data leest

In de App Router zijn componenten Server Components tenzij anders aangegeven. Ze kunnen async zijn en direct met de database praten; niets van deze code bereikt de browser.

Een Client Component voor interactie

"use client" helemaal bovenaan markeert een grens: dit bestand en alles wat het importeert wordt gebundeld voor de browser. Houd deze bestanden klein en duw ze naar de bladeren van de boom.

Een Server Component door een Client Component heen geven

Een Client Component kan geen Server Component importeren, maar kan er wel een als children ontvangen. De server rendert hem eerst en de client plaatst alleen het resultaat.

Houd geheimen per ongeluk buiten de browser

Door het pakket server-only te importeren faalt de build als een clientbestand deze module ooit importeert, zodat een API-key niet via een slordige import kan lekken.

Server functions voor formulieren

Een formulier dat naar een server function post

"use server" maakt van een async functie een endpoint dat het formulier kan aanroepen. Het formulier werkt al voordat JavaScript laadt, omdat het een echte form post is.

Pending- en resultaattoestand met useActionState

useActionState (React 19) wrapt de server function en geeft u het laatste resultaat en een pending-vlag, zodat de knop Verzenden kan tonen en het bericht kan verschijnen zonder extra state.

De paginadata verversen na een wijziging

Vertel Next.js na een mutatie welke data van welk pad verouderd is, zodat de volgende render de wijziging toont.

Streamen met Suspense

Stream het trage deel met Suspense

Zet een trage Server Component in Suspense. De rest van de pagina wordt meteen verstuurd met de fallback op zijn plek, en het trage deel stroomt binnen wanneer de data er is.

loading.tsx voor een hele route

Een loading.tsx-bestand naast page.tsx zet die pagina voor u in een Suspense-grens, zodat navigatie het direct toont terwijl de data van de pagina laadt.

Start verzoeken tegelijk

Wie in een Server Component de ene fetch na de andere afwacht, telt hun tijden bij elkaar op. Start ze tegelijk en wacht op beide.

Fouten die u tegenkomt

Veelvoorkomende fouten en de oplossing

Nieuw met async code? Begin met

promises, async/await en fetch

Diagram van de grens

Server

Client

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap