0Pricing
React Academy · Lektion

Abgeleitete und asynchrone Atoms

Abgeleitete Atoms aus anderen Atoms zusammensetzen und asynchrone Atoms erstellen, die sich in Suspense integrieren

Abgeleitete und asynchrone Atoms 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.

Schreibgeschützte abgeleitete Atome

Erstellen Sie ein abgeleitetes Atom, indem Sie eine Getter-Funktion übergeben: const doubleAtom = atom(get => get(countAtom) * 2). Dieses Atom speichert keinen eigenen Wert, sondern berechnet ihn jedes Mal neu, wenn sich countAtom ändert.

Abgeleitete Atome sind ohne manuelle Synchronisierung immer aktuell. Sie entsprechen in Jotai den berechneten Eigenschaften.

Automatische Abhängigkeitsverfolgung

Jotai erfasst, auf welche Atome innerhalb der Getter-Funktion zugegriffen wurde, und wertet das abgeleitete Atom automatisch neu aus, wenn sich eines davon ändert. Sie müssen Abhängigkeiten nicht explizit deklarieren.

Wenn der Getter get(atomA) und get(atomB) aufruft, wird das abgeleitete Atom aktualisiert, sobald sich entweder atomA oder atomB ändert.

Beschreibbare abgeleitete Atome

Ein beschreibbares abgeleitetes Atom verfügt sowohl über einen Getter als auch über einen Setter: atom(get => get(baseAtom).toUpperCase(), (get, set, newValue) => set(baseAtom, newValue.toLowerCase())). Beim Lesen wird der transformierte Wert geliefert, beim Schreiben wird der Wert transformiert und zurückgespeichert.

Dieses Muster ermöglicht eine bidirektionale Datentransformation, ohne das Basis-Atom direkt offenzulegen.

Asynchrone Atome mit Promises

Die Getter-Funktion kann asynchron sein: const userAtom = atom(async get => { const id = get(userIdAtom); return await fetchUser(id); }). Jotai akzeptiert Promises aus Atom-Getter-Funktionen nativ.

Wenn sich userIdAtom ändert, führt Jotai den asynchronen Getter automatisch erneut aus, und die konsumierende Komponente wird während des Abrufs suspendiert.

Asynchrone Atome und React Suspense

Asynchrone Atome lassen sich nahtlos in React Suspense integrieren. Umschließen Sie die konsumierende Komponente mit einer Suspense-Grenze und einem Fallback. Die Komponente wird angehalten, solange das Promise aussteht, und gerendert, sobald es aufgelöst wird.

Dadurch entfällt die manuelle Verwaltung des Ladezustands in der Komponente: kein isLoading-Flag und kein useEffect zum Abrufen von Daten.

loadable: Suspense nicht verwenden

Importieren Sie loadable aus jotai/utils. Umschließen Sie ein asynchrones Atom: const loadableUserAtom = loadable(userAtom). Komponenten, die loadableUserAtom lesen, erhalten {state: 'loading'}, {state: 'hasData', data: user} oder {state: 'hasError', error}, ohne suspendiert zu werden.

Verwenden Sie loadable, wenn Sie einen eigenen Ladezustand direkt in der Oberfläche anzeigen möchten, anstatt sich auf eine Suspense-Grenze zu verlassen.

Atome zurücksetzen

Das Dienstprogramm atomWithReset aus jotai/utils erstellt ein Atom, das mithilfe des RESET-Symbols auf seinen Anfangswert zurückgesetzt werden kann. Das ist sauberer, als den Anfangswert manuell zu speichern und erneut anzuwenden.

Setzen Sie in Formularen beim Absenden oder Abbrechen alle Feldatome zurück, indem Sie in einem einzigen Handler jeden Setter mit RESET aufrufen.

Atome verketten

Ein abgeleitetes Atom kann aus mehreren anderen Atomen lesen: const summaryAtom = atom(get => ({ user: get(userAtom), settings: get(settingsAtom), count: get(countAtom) })). Dadurch entsteht eine einzelne stabile Referenz, die aktualisiert wird, wenn sich eine beliebige Abhängigkeit ändert.

Komponenten, die nur die Zusammenfassung benötigen, abonnieren summaryAtom statt alle drei einzelnen Atome zu abonnieren.

Bedingte Atome

Abgeleitete Atome können abhängig von einer Bedingung aus unterschiedlichen Atomen lesen: const activeDataAtom = atom(get => get(modeAtom) === 'A' ? get(dataAAtom) : get(dataBAtom)). Wenn modeAtom wechselt, ändert das abgeleitete Atom automatisch seine Datenquelle.

Jotai abonniert bei jeder Auswertung erneut das richtige Atom und stellt so sicher, dass keine veralteten Daten aus dem inaktiven Zweig verwendet werden.

Fehlerbehandlung bei asynchronen Atomen

Wenn der Getter eines asynchronen Atoms einen Fehler auslöst oder ablehnt, wird der Fehler bei der Verwendung mit Suspense an die nächste React-Fehlergrenze weitergegeben. Mit loadable erscheint der Fehler im Feld state.error und kann direkt in der Oberfläche behandelt werden.

Kombinieren Sie asynchrone Atome im Produktivcode immer entweder mit einem ErrorBoundary oder einem loadable-Wrapper.

Performance abgeleiteter Atome

Abgeleitete Atome speichern ihr letztes Ergebnis zwischen. Wenn alle abhängigen Atome bei der vorherigen und der aktuellen Auswertung dieselben Werte liefern, gibt das abgeleitete Atom dieselbe Referenz zurück und es kommt zu keinen erneuten Renderings nachgelagerter Komponenten.

Bei aufwendigen Ableitungen, etwa der Verarbeitung großer Arrays, bietet diese Zwischenspeicherung erhebliche Performancevorteile, ohne dass eine zusätzliche Konfiguration erforderlich ist.

Integration asynchroner Atome in Suspense

Was geschieht mit einer Komponente, die ein asynchrones Atom liest, während das zugehörige Promise noch aussteht?

Lektionsrückblick

Abgeleitete Atome berechnen Werte aus anderen Atomen mithilfe von Getter-Funktionen und automatischer Abhängigkeitsverfolgung. Asynchrone Atome verwenden asynchrone Getter und lassen sich standardmäßig in React Suspense integrieren. Verwenden Sie loadable aus jotai/utils, um Suspense nicht zu verwenden und Lade- sowie Fehlerzustände direkt in der Oberfläche zu behandeln.

Beschreibbare abgeleitete Atome ermöglichen bidirektionale Transformationen, und bedingte Atome wechseln abhängig von den Werten anderer Atome dynamisch ihre Datenquelle.

Häufig gestellte Fragen

Ist die Lektion „Abgeleitete und asynchrone Atoms“ kostenlos?

Ja — der vollständige Text von „Abgeleitete und asynchrone Atoms“ 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 „Abgeleitete und asynchrone Atoms“?

Abgeleitete Atoms aus anderen Atoms zusammensetzen und asynchrone Atoms erstellen, die sich in Suspense integrieren 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 „Abgeleitete und asynchrone Atoms“?

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. Atoms: Die Einheit des Zustands in Jotai
  2. Atoms mit useAtom lesen und schreiben
  3. Abgeleitete und asynchrone Atoms
  4. Jotai vs. Zustand vs. Context: Wann welches Werkzeug geeignet ist
← Zurück zu React Academy