0Pricing
React Academy · Lektion

Optimistische Muster mit React Query und Zustand

Die onMutate-, onError- und onSettled-Callbacks von React Query sowie Zustand für strukturierte optimistische UI-Abläufe verwenden

Optimistische Muster mit React Query und Zustand ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Überblick über React Query useMutation

Der useMutation-Hook von React Query bietet eine integrierte Infrastruktur für optimistische Aktualisierungen durch drei Rückrufe im Lebenszyklus: onMutate (wird vor der Mutation ausgeführt und gibt ein Kontextobjekt zurück), onError (wird bei einem Fehler ausgeführt und erhält den Kontext) und onSettled (wird bei Erfolg oder Fehler ausgeführt). Diese Struktur wurde speziell für optimistische Muster entwickelt.

onMutate: Die Phase der optimistischen Aktualisierung

In onMutate führen Sie drei Schritte aus: Brechen Sie zunächst alle laufenden Abfragen für die betroffenen Daten ab (await queryClient.cancelQueries({ queryKey })), erstellen Sie anschließend einen Snapshot des aktuellen Caches (queryClient.getQueryData(queryKey)) und wenden Sie schließlich die optimistische Aktualisierung auf den Cache an (queryClient.setQueryData(queryKey, updater)). Geben Sie den Snapshot als Kontext zurück.

onError: Rollback mit Kontext

Der Rückruf onError erhält den Fehler, die Mutationsvariablen und den von onMutate zurückgegebenen Kontext. Verwenden Sie den Kontext für das Rollback: queryClient.setQueryData(queryKey, context.previousData). Der Kontext verbindet den in onMutate erstellten Snapshot mit dem Rollback in onError.

onSettled: Für die Synchronisierung neu laden

Der Rückruf onSettled wird unabhängig von Erfolg oder Fehler ausgeführt. Verwenden Sie ihn, um die Abfrage neu zu laden und mit dem Serverzustand zu synchronisieren: queryClient.invalidateQueries({ queryKey }). So stellen Sie sicher, dass Sie sich nach jeder Mutation – unabhängig davon, ob sie erfolgreich war (der Server kann die Daten verändert haben) oder fehlgeschlagen ist (das Rollback ist abgeschlossen) – letztendlich an den maßgeblichen Serverzustand annähern.

Optimistisches Umschalten einer Todo-Aufgabe mit React Query

Ein praktisches Beispiel ist das Umschalten des Erledigt-Status einer Todo-Aufgabe. Erstellen Sie in onMutate einen Snapshot der Todo-Liste und aktualisieren Sie anschließend die betreffende Todo-Aufgabe im Cache. Stellen Sie in onError den Snapshot aus dem Kontext wieder her. Entwerten Sie in onSettled die Todo-Abfrage, um sie neu zu laden. Die Person sieht das Umschalten sofort; der Server wird im Hintergrund synchronisiert.

Optimistische Aktualisierungen mit Zustand

In einem Zustand-Store sind optimistische Aktualisierungen unkompliziert: Erstellen Sie eine Aktion updateItem(id, changes), die das Element sofort im Store aktualisiert und anschließend die API aufruft. Wenn die API fehlschlägt, rufen Sie eine weitere Aktion revertItem(id, previousState) auf. Durch die synchronen Zustandsaktualisierungen von Zustand erfolgt der optimistische Schritt sofort.

Immer mit Zustand für komplexe Aktualisierungen

Verwenden Sie beim optimistischen Aktualisieren tief verschachtelter Zustände in Zustand immer's produce für übersichtliche Mutationen: set(produce(state => { state.items[id] = { ...state.items[id], ...changes } })). Immer übernimmt unveränderliche Aktualisierungen mit einer veränderlichen Syntax, wodurch komplexe Änderungen an verschachtelten Zuständen lesbar und sicher werden.

React-19-Hook useOptimistic

React 19 hat useOptimistic(state, updateFn) als integrierten Hook für optimistische Aktualisierungen innerhalb von Server Actions eingeführt. const [optimisticState, addOptimistic] = useOptimistic(items, (state, newItem) => [...state, newItem]). Der Aufruf von addOptimistic(newItem) aktualisiert die Benutzeroberfläche sofort, während die Server Action asynchron ausgeführt wird.

Automatischer Rollback mit useOptimistic

useOptimistic übernimmt das Rollback automatisch. Wenn die Server Action abgeschlossen ist (erfolgreich oder mit einem Fehler), setzt React den optimistischen Zustand zurück und wendet den tatsächlichen Zustand vom Server an. Sie müssen keine manuelle Rollback-Logik schreiben – React verwaltet den Lebenszyklus der optimistischen Aktualisierung innerhalb der Suspense Boundary der Aktion.

Die drei Ansätze im Vergleich

Manuelle optimistische Aktualisierungen bieten vollständige Kontrolle, erfordern aber zusätzlichen Boilerplate-Code. React Query integriert mit onMutate/onError/onSettled den Abfrage-Cache in die automatische Synchronisierung. useOptimistic ist für Server Actions am einfachsten, erfordert jedoch React 19 und eine Server-Action-Architektur. Wählen Sie je nach Datenschicht: manuell für einfachen lokalen Zustand, React Query für REST-APIs und useOptimistic für RSC/Server Actions.

Das passende Muster auswählen

Berücksichtigen Sie bei der Auswahl eines optimistischen Musters Ihre Architektur. Wenn Sie React Query in Ihrer gesamten Anwendung verwenden, ist das onMutate-Muster konsistent und cachebewusst. Wenn Sie Zustand für den globalen Zustand verwenden, passt das aktionsbasierte Muster natürlich dazu. Wenn Sie React 19 mit Server Actions einsetzen, ist useOptimistic die idiomatische Wahl. Es ist üblich und akzeptabel, innerhalb einer Anwendung verschiedene Muster zu kombinieren.

Rückgabewert von React Query onMutate

Was sollte der Rückruf onMutate in React Query zurückgeben, damit ein Rollback in onError möglich ist?

Lektion zusammengefasst: Optimistische Muster

React Query useMutation verwendet onMutate (Abfragen abbrechen, Snapshot erstellen, optimistische Aktualisierung anwenden, Kontext zurückgeben), onError (Snapshot aus dem Kontext wiederherstellen) und onSettled (Abfrage zur Aktualisierung entwerten). Optimistische Aktualisierungen mit Zustand rufen zuerst die Zustandsaktion und anschließend die API auf und machen die Änderung bei einem Fehler rückgängig. React 19 bietet mit useOptimistic ein automatisches Rollback innerhalb von Server Actions. Wählen Sie das Muster, das zur Architektur Ihrer Datenschicht passt.

Häufig gestellte Fragen

Ist die Lektion „Optimistische Muster mit React Query und Zustand“ kostenlos?

Ja — der vollständige Text von „Optimistische Muster mit React Query und Zustand“ 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 „Optimistische Muster mit React Query und Zustand“?

Die onMutate-, onError- und onSettled-Callbacks von React Query sowie Zustand für strukturierte optimistische UI-Abläufe verwenden 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 4 von 4.

Wie lange dauert die Lektion „Optimistische Muster mit React Query und Zustand“?

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. Was ist Optimistic UI und wann wird sie eingesetzt
  2. Optimistische Aktualisierungen manuell implementieren
  3. Bei Fehlern zurücksetzen und Konflikte lösen
  4. Optimistische Muster mit React Query und Zustand
← Zurück zu React Academy