0Pricing
React Academy · Lektion

useActionState und useFormStatus

Verwenden Sie useActionState, um ausstehende Zustände und Fehler zu verfolgen, und useFormStatus, um Submit-Schaltflächen während der Übertragung zu deaktivieren.

useActionState und useFormStatus ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des React Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

useActionState einführen

useActionState(action, initialState) ist ein React-19-Hook, der eine Server Action um Statusverfolgung über mehrere Übermittlungen hinweg erweitert. Er erhält die Action-Funktion und einen Anfangswert und gibt ein Tupel zurück, mit dem Sie den gesamten Ablauf des Formulars steuern können.

Das Rückgabe-Tupel

Der Hook gibt [state, formAction, isPending] zurück. state enthält den zuletzt von der Action zurückgegebenen Wert und beginnt mit null oder Ihrem Anfangswert. formAction ist die verpackte Action, die Sie an das Formular übergeben. isPending ist true, während die Action auf dem Server ausgeführt wird.

Status zwischen Übermittlungen verfolgen

Bei jeder Formularübermittlung wird die Server Action ausgeführt und ihr Rückgabewert zum neuen state. Beim ersten Rendern entspricht state dem initialState. Dadurch können Sie auf einfache Weise unterschiedliche Benutzeroberflächen anzeigen, je nachdem, ob es bereits vorherige Übermittlungen gab und welche Ergebnisse sie geliefert haben.

Inline-Validierungsfehler anzeigen

Wenn die Server Action { errors: { email: 'Invalid email' } } zurückgibt, können Sie den Fehler direkt anzeigen: {state.errors?.email && <p>{state.errors.email}</p>}. Da der Status bei erneuten Render-Vorgängen erhalten bleibt, bleibt die Fehlermeldung sichtbar, bis eine erfolgreiche Übermittlung den Status ersetzt.

Erfolgsmeldungen anzeigen

Wenn die Action { success: true } zurückgibt, kann die Komponente eine Erfolgsmeldung anzeigen: {state?.success && <p>Form submitted!</p>}. Abhängig vom Statuswert kann das Formular bedingt ausgeblendet oder durch die Erfolgsmeldung ersetzt werden.

useFormStatus einführen

useFormStatus() ist ein Hook, der den ausstehenden Status des nächstgelegenen übergeordneten <form>-Elements ausliest. Er gibt ein Objekt zurück, das unter anderem { pending: boolean } enthält. Dieser Hook muss innerhalb einer Komponente verwendet werden, die ein untergeordnetes Element des Formulars ist, nicht in der Komponente, die das Formular selbst rendert.

Warum die Einschränkung für den Verwendungsort besteht

Die Einschränkung, dass useFormStatus innerhalb des Formulars verwendet werden muss, besteht, weil der Hook den Kontext des Formulars aus dem darüberliegenden React-Baum ausliest. Wenn er in derselben Komponente aufgerufen würde, die das Formular rendert, wäre er ein Geschwisterelement des Formulars und kein Nachfahre. Daher hätte er keinen Zugriff auf den Status des Formulars.

Eine Submit-Button-Komponente erstellen

Das standardmäßige Muster besteht darin, die Submit-Schaltfläche in eine eigene Komponente auszulagern: function SubmitButton() { const { pending } = useFormStatus(); return <button disabled={pending}>Submit</button>; }. Diese Komponente wird anschließend innerhalb des Formulars platziert und erhält dadurch Zugriff auf den ausstehenden Status des Formulars.

Die Submit-Schaltfläche deaktivieren

Das Setzen von disabled={pending} auf der Submit-Schaltfläche verhindert doppelte Übermittlungen. Wenn der Benutzer auf „Submit“ klickt und die Server Action ausgeführt wird, ist pending gleich true; die Schaltfläche wird deaktiviert und kann nicht angeklickt werden. Nach Abschluss der Action wird pending wieder zu false und die Schaltfläche wird erneut aktiviert.

Beide Hooks kombinieren

Das vollständige UX-Muster für Formulare kombiniert beide Hooks: useActionState in der Formularkomponente verfolgt das Ergebnis der Action und stellt formAction bereit, während useFormStatus innerhalb einer untergeordneten SubmitButton-Komponente den ausstehenden Status verfolgt. Zusammen ermöglichen sie die Anzeige validierter Fehler und eine reaktionsschnelle Submit-Schaltfläche.

Optimistische UI mit useOptimistic

Für ein noch reaktionsschnelleres Benutzererlebnis lässt sich useOptimistic mit useActionState kombinieren. Sie aktualisieren die Benutzeroberfläche sofort mit dem erwarteten Ergebnis, bevor der Server antwortet, und gleichen sie anschließend mit der tatsächlichen Antwort ab. Dieses Muster ist bei Like-Schaltflächen, Aufgabenlisten und anderen Interaktionen mit schnellem Feedback üblich.

Verwendungsort von useFormStatus

Wo muss useFormStatus aufgerufen werden, damit es korrekt funktioniert?

Zusammenfassung der Lektion

useActionState(action, initialState) gibt [state, formAction, isPending] zurück, um die Ergebnisse von Server Actions zu verfolgen. Der Status enthält den Rückgabewert der Action und ermöglicht dadurch die direkte Anzeige von Fehlern und Erfolgsmeldungen. useFormStatus() stellt innerhalb untergeordneter Komponenten des Formulars { pending } bereit und ermöglicht so reaktionsschnelle Submit-Schaltflächen. Zusammen bilden beide Hooks die Grundlage für ein vollständiges und barrierefreies Formularerlebnis.

Häufig gestellte Fragen

Ist die Lektion „useActionState und useFormStatus“ kostenlos?

Ja — der vollständige Text von „useActionState und useFormStatus“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des React Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der React Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „useActionState und useFormStatus“?

Verwenden Sie useActionState, um ausstehende Zustände und Fehler zu verfolgen, und useFormStatus, um Submit-Schaltflächen während der Übertragung zu deaktivieren. Du übst React Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um React Academy zu starten?

Keine Vorkenntnisse erforderlich. React Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „useActionState und useFormStatus“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser React Academy-Lektion Code schreiben und ausführen?

Ja. Jede React Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Server Actions in React 19 und Next.js
  2. Form Actions: API-Routen für Mutationen ersetzen
  3. useActionState und useFormStatus
  4. Progressive Verbesserung mit Server Actions
← Zurück zu React Academy