Datenaktualisierung durchführen
Sie können Daten in Next.js mit Reacts Server-Funktionen (Server Functions) aktualisieren. Diese Seite erklärt, wie Sie Server-Funktionen erstellen und aufrufen können.
Server-Funktionen
Eine Server-Funktion ist eine asynchrone Funktion, die auf dem Server ausgeführt wird. Server-Funktionen sind inhärent asynchron, da sie vom Client über eine Netzwerkanfrage aufgerufen werden. Wenn sie als Teil einer action
aufgerufen werden, werden sie auch Server-Aktionen (Server Actions) genannt.
Per Konvention ist eine action
eine asynchrone Funktion, die an startTransition
übergeben wird. Server-Funktionen werden automatisch mit startTransition
umschlossen, wenn:
- Sie über die
action
-Prop an ein<form>
übergeben werden, - Sie über die
formAction
-Prop an einen<button>
übergeben werden - Sie an
useActionState
übergeben werden
Erstellen von Server-Funktionen
Eine Server-Funktion kann mit der use server
-Direktive definiert werden. Sie können die Direktive am Anfang einer asynchronen Funktion platzieren, um die Funktion als Server-Funktion zu markieren, oder am Anfang einer separaten Datei, um alle Exporte dieser Datei zu markieren.
Server-Komponenten
Server-Funktionen können in Server-Komponenten inline definiert werden, indem die "use server"
-Direktive am Anfang des Funktionskörpers hinzugefügt wird:
Client-Komponenten
Es ist nicht möglich, Server-Funktionen in Client-Komponenten zu definieren. Sie können sie jedoch in Client-Komponenten aufrufen, indem Sie sie aus einer Datei importieren, die die "use server"
-Direktive am Anfang enthält:
Aufrufen von Server-Funktionen
Es gibt zwei Hauptmethoden, um eine Server-Funktion aufzurufen:
- Formulare in Server- und Client-Komponenten
- Ereignishandler (Event Handlers) in Client-Komponenten
Formulare
React erweitert das HTML-<form>
-Element, um den Aufruf von Server-Funktionen mit der HTML-action
-Prop zu ermöglichen.
Wenn eine Funktion in einem Formular aufgerufen wird, erhält sie automatisch das FormData
-Objekt. Sie können die Daten mit den nativen FormData
-Methoden extrahieren:
Gut zu wissen: Wenn sie an die
action
-Prop übergeben werden, werden Server-Funktionen auch als Server-Aktionen bezeichnet.
Ereignishandler
Sie können eine Server-Funktion in einer Client-Komponente mit Ereignishandlern wie onClick
aufrufen.
Beispiele
Anzeigen eines Ladezustands
Während eine Server-Funktion ausgeführt wird, können Sie einen Ladeindikator mit Reacts useActionState
-Hook anzeigen. Dieser Hook gibt einen pending
-Boolean zurück:
Cache neu validieren
Nach einer Aktualisierung können Sie den Next.js-Cache neu validieren und die aktualisierten Daten anzeigen, indem Sie revalidatePath
oder revalidateTag
innerhalb der Server-Funktion aufrufen:
Weiterleitung
Sie möchten den Benutzer möglicherweise nach einer Aktualisierung auf eine andere Seite weiterleiten. Dies können Sie tun, indem Sie redirect
innerhalb der Server-Funktion aufrufen: