Ein häufiger Anwendungsfall in React-Apps besteht darin, eine Datenmutation durchzuführen und dann als Reaktion den Status zu aktualisieren. Wenn ein Benutzer beispielsweise ein Formular zur Namensänderung sendet, stellen Sie eine API-Anfrage und verarbeiten dann die Antwort. In der Vergangenheit mussten Sie ausstehende Status, Fehler, optimistische Aktualisierungen und sequentielle Anfragen manuell bearbeiten.
Zum Beispiel könnten Sie den Status „Ausstehend“ und „Fehler“ in useState:
behandeln
// Before Actions function UpdateName({}) { const [name, setName] = useState(""); const [error, setError] = useState(null); const [isPending, setIsPending] = useState(false); const handleSubmit = async () => { setIsPending(true); const error = await updateName(name); setIsPending(false); if (error) { setError(error); return; } redirect("/path"); }; return ( <div> <input value={name} onChange={(event) => setName(event.target.value)} /> <button onClick={handleSubmit} disabled={isPending}> Update </button> {error && <p>{error}</p>} </div> ); }
In React 19 fügen wir Unterstützung für die Verwendung asynchroner Funktionen in Übergängen hinzu, um ausstehende Status, Fehler, Formulare und optimistische Aktualisierungen automatisch zu verarbeiten.
Zum Beispiel können Sie useTransition verwenden, um den ausstehenden Status für Sie zu verwalten:
// Using pending state from Actions function UpdateName({}) { const [name, setName] = useState(""); const [error, setError] = useState(null); const [isPending, startTransition] = useTransition(); const handleSubmit = () => { startTransition(async () => { const error = await updateName(name); if (error) { setError(error); return; } redirect("/path"); }) }; return ( <div> <input value={name} onChange={(event) => setName(event.target.value)} /> <button onClick={handleSubmit} disabled={isPending}> Update </button> {error && <p>{error}</p>} </div> ); }
Der asynchrone Übergang setzt den Status „isPending“ sofort auf „true“, stellt die asynchrone(n) Anforderung(en) und schaltet „isPending“ nach allen Übergängen auf „false“. Dadurch können Sie die aktuelle Benutzeroberfläche reaktionsfähig und interaktiv halten, während sich die Daten ändern.
Konventionell werden Funktionen, die asynchrone Übergänge verwenden, „Aktionen“ genannt.
Aktionen verwalten automatisch die Übermittlung von Daten für Sie:
Ausstehender Status: Aktionen stellen einen ausstehenden Status bereit, der zu Beginn einer Anfrage beginnt und automatisch zurückgesetzt wird, wenn die endgültige Statusaktualisierung festgeschrieben wird.
Optimistische Updates: Aktionen unterstützen den neuen useOptimistic-Hook, sodass Sie Benutzern sofortiges Feedback anzeigen können, während die Anfragen gesendet werden.
Fehlerbehandlung: Aktionen bieten Fehlerbehandlung, sodass Sie Fehlergrenzen anzeigen können, wenn eine Anfrage fehlschlägt, und optimistische Aktualisierungen automatisch auf ihren ursprünglichen Wert zurücksetzen können.
Formulare:
Aufbauend auf Actions führt React 19 useOptimistic ein, um optimistische Updates zu verwalten, und einen neuen Hook React.useActionState, um häufige Fälle für Actions zu verarbeiten. In React-Dom fügen wir