React Server Components erklärt

React Server Components erklärt: use client, Server Actions, Suspense | We.Inc

React Server Components verständlich erklärt: ein Grenzdiagramm, die Regeln für "use client", Datenladen, Server Actions für Formulare mit useActionState, Streaming mit Suspense und Lösungen für häufige Fehler.

React Server Components erklärt

React Server Components rendern auf dem Server und schicken fertige UI an den Browser, nicht ihr JavaScript. Sie können direkt auf Daten warten und Geheimnisse verwenden. Alles Interaktive kommt in eine Client Component, also eine Datei, die mit "use client" beginnt. Formulare können mit "use server" markierte Serverfunktionen aufrufen, und Suspense streamt langsame Teile später nach.

Die drei Direktiven und Hooks, die du brauchst

Beginne mit dem Diagramm: Blaue Kästen bleiben auf dem Server, orangefarbene werden auch an den Browser ausgeliefert. Kopiere dann die Muster für Daten, Formulare und Streaming und nutze die Fehlertabelle, wenn sich der Build beschwert.

Häufige Fragen

Sind Server Components dasselbe wie serverseitiges Rendering?

Nein. Serverseitiges Rendering macht beim ersten Laden aus jeder Komponente HTML und liefert trotzdem ihr JavaScript aus. Eine Server Component liefert ihr JavaScript nie aus, nur ihr Ergebnis. Client Components werden beim ersten Laden ebenfalls auf dem Server gerendert.

Brauche ich Next.js, um Server Components zu nutzen?

Sie brauchen ein Framework oder einen Bundler, der sie unterstützt. Der Next.js App Router ist am weitesten verbreitet; einige andere, etwa Waku, unterstützen sie ebenfalls.

Kann eine Client Component eine Server Component importieren?

Nein, ein Import aus einer Client-Datei zieht das Modul ins Client-Bundle. Übergib die Server Component stattdessen als children oder als andere Prop von einer übergeordneten Server Component.

Was ist der Unterschied zwischen Server Actions und Serverfunktionen?

React nennt inzwischen jede mit "use server" markierte Funktion eine Serverfunktion. Wird eine davon als Formular-Action verwendet oder innerhalb einer Transition aufgerufen, spricht man oft von einer Server Action. Next.js hat den Begriff Server Actions zuerst verwendet.

Funktioniert useActionState ohne JavaScript?

Das Formular sendet auch vor der Hydration an die Serverfunktion, es wird also abgeschickt. Der Pending-Zustand und die Inline-Meldung brauchen JavaScript, sorge also dafür, dass der Server in jedem Fall eine sinnvolle Seite zurückgibt.

Warum dieses Modell einer Website hilft

Sicherheits-Checkliste für Serverfunktionen

Was wo läuft

Wo was laufen kann

Server und Client Components

Eine Server Component, die Daten liest

Im App Router sind Komponenten Server Components, sofern nicht anders markiert. Sie können async sein und direkt mit der Datenbank sprechen; nichts von diesem Code erreicht den Browser.

Eine Client Component für Interaktion

"use client" ganz oben markiert eine Grenze: Diese Datei und alles, was sie importiert, wird für den Browser gebündelt. Halte diese Dateien klein und schiebe sie an die Blätter des Baums.

Eine Server Component durch eine Client Component reichen

Eine Client Component kann keine Server Component importieren, sie aber als children erhalten. Der Server rendert sie zuerst, und der Client platziert nur das Ergebnis.

Geheimnisse nicht versehentlich in den Browser bringen

Wenn du das Paket server-only importierst, schlägt der Build fehl, sobald eine Client-Datei dieses Modul importiert, so kann ein API-Schlüssel nicht durch einen unachtsamen Import durchsickern.

Serverfunktionen für Formulare

Ein Formular, das an eine Serverfunktion sendet

"use server" macht aus einer async Funktion einen Endpunkt, den das Formular aufrufen kann. Das Formular funktioniert schon, bevor JavaScript geladen ist, weil es ein echter Formular-Post ist.

Pending- und Ergebniszustand mit useActionState

useActionState (React 19) umschließt die Serverfunktion und liefert dir ihr letztes Ergebnis und ein Pending-Flag, so kann der Button Wird gesendet anzeigen und die Meldung ohne zusätzlichen State erscheinen.

Die Seitendaten nach einer Änderung aktualisieren

Teile Next.js nach einer Mutation mit, welche Daten eines Pfads veraltet sind, damit das nächste Rendern die Änderung zeigt.

Streaming mit Suspense

Den langsamen Teil mit Suspense streamen

Umschließe eine langsame Server Component mit Suspense. Der Rest der Seite wird sofort mit dem Fallback an dieser Stelle gesendet, und der langsame Teil wird nachgestreamt, sobald seine Daten eintreffen.

loading.tsx für eine ganze Route

Eine loading.tsx-Datei neben page.tsx umschließt diese Seite automatisch mit einer Suspense-Grenze, sodass die Navigation sie sofort anzeigt, während die Daten der Seite laden.

Anfragen gemeinsam starten

Wartest du in einer Server Component auf einen Fetch nach dem anderen, addieren sich ihre Zeiten. Starte sie gleichzeitig und warte dann auf beide.

Fehler, denen du begegnen wirst

Häufige Fehler und ihre Lösung

Neu bei asynchronem Code? Beginne mit

Promises, async/await und fetch

Grenzdiagramm

Server

Client

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap