Atoms mit useAtom lesen und schreiben
useAtom, useAtomValue und useSetAtom verwenden, um Atoms im gesamten Komponentenbaum zu lesen und zu aktualisieren
Atoms mit useAtom lesen und schreiben ist eine kostenlose React Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.
useAtom: Der primäre Hook
useAtom(someAtom) gibt [value, setter] zurück und bildet damit die useState-API nach. value enthält den aktuellen Atom-Zustand, setter aktualisiert ihn. Verwenden Sie diesen Hook, wenn eine Komponente das Atom sowohl liest als auch schreibt.
Der Setter akzeptiert entweder einen neuen Wert oder eine Aktualisierungsfunktion: setCount(c => c + 1).
useAtomValue: Schreibgeschützter Zugriff
useAtomValue(someAtom) gibt nur den aktuellen Wert zurück, ohne Setter. Verwenden Sie diesen Hook in reinen Anzeige-Komponenten, die den Zustand lesen, aber niemals ändern.
Da die Komponente keine Setter-Referenz enthält, ist die Absicht im Code eindeutig dokumentiert: Diese Komponente liest ausschließlich Werte.
useSetAtom: Schreibzugriff ohne Lesezugriff
useSetAtom(someAtom) gibt nur die Setter-Funktion zurück. Entscheidend ist, dass dieser Hook die Komponente nicht für den Wert des Atoms registriert. Die Komponente wird niemals erneut gerendert, wenn sich das Atom ändert.
Verwenden Sie diesen Hook für aktionsorientierte Komponenten wie Schaltflächen, die Zustandsänderungen auslösen, aber keine abgeleitete UI anzeigen.
Warum useSetAtom für die Performance wichtig ist
Eine Komponente, die useSetAtom(countAtom) aufruft, um einen Zähler zu erhöhen, wird niemals erneut gerendert, wenn sich countAtom ändert, da sie kein Wertabonnement besitzt. Nur die Komponente, die den Zähler anzeigt, wird erneut gerendert.
Das ist eine einfache, aber wirkungsvolle Optimierung: Entkoppeln Sie Schreib- und Lesezugriffe, um kaskadierende erneute Renderings zu verhindern.
atomWithStorage für Persistenz
Importieren Sie atomWithStorage aus jotai/utils. Verwenden Sie es genauso wie atom(), übergeben Sie aber als erstes Argument einen Storage-Schlüssel: atomWithStorage('theme', 'light'). Das Atom synchronisiert sich automatisch mit localStorage.
Beim Neuladen der Seite wird das Atom aus localStorage hydratisiert. Alle Komponenten, die das Atom lesen, übernehmen sofort den gespeicherten Wert.
atomWithStorage zurücksetzen
Das RESET-Symbol aus jotai/utils kann an den Setter eines atomWithStorage-Atoms übergeben werden: setter(RESET). Dadurch wird der Eintrag in localStorage gelöscht und das Atom auf seinen Anfangswert zurückgesetzt.
Das ist nützlich für Abmeldevorgänge oder Schaltflächen zum Zurücksetzen auf die Standardwerte in Einstellungsseiten.
Atomfamilien mit atomFamily
atomFamily aus jotai/utils erstellt eine Factory, die ein parametrisiertes Atom zurückgibt. Beispielsweise erstellt atomFamily(id => atom(null)) für jede übergebene eindeutige ID ein eigenes Atom.
Das ist ideal für zustandsbezogene Einzelwerte wie selectedAtom(itemId) oder expandedAtom(rowId), ohne ein einzelnes großes Map-Atom verwalten zu müssen.
Bereinigung von Atomfamilien
Atomfamilien können unbegrenzt wachsen, wenn sich IDs ansammeln. Verwenden Sie atomFamily.setShouldRemove((createdAt, param) => ...), um ein Bereinigungsprädikat festzulegen, das Jotai bei der Entscheidung zum Entfernen veralteter Familienmitglieder aufruft.
Bereinigen Sie bei Listen, in denen Elemente hinzugefügt und entfernt werden, die Einträge der Atomfamilie immer, wenn Elemente gelöscht werden, um Speicherlecks zu vermeiden.
Jotai DevTools
Das Paket jotai-devtools stellt ein visuelles Panel bereit, in dem alle aktiven Atome und ihre aktuellen Werte aufgelistet werden. Installieren Sie es, umschließen Sie Ihre App mit DevTools und untersuchen Sie den Atom-Zustand in Echtzeit.
Jede Aktualisierung eines Atoms wird zusammen mit dem vorherigen und dem nächsten Wert protokolliert, wodurch sich komplexe Atom-Interaktionen unkompliziert debuggen lassen.
Beispiel für selektives erneutes Rendern
In einer großen Liste kann eine ListContainer-Komponente useSetAtom(selectedIdAtom) verwenden, um die Auswahl zu aktualisieren, ohne selectedIdAtom zu abonnieren. Nur die einzelnen ListItem-Komponenten, die useAtomValue(selectedIdAtom) aufrufen, werden bei einer Änderung der Auswahl erneut gerendert.
Dieses Muster skaliert gut: Auch das Hinzufügen von Tausenden Listenelementen verlangsamt die Aktualisierung der Auswahl nicht.
Die drei Hooks kombinieren
Wählen Sie den Hook, der zum Bedarf Ihrer Komponente passt: useAtomValue für reine Anzeige, useSetAtom für reine Aktionen und useAtom, wenn beides erforderlich ist. Durch dieses bewusste API-Design wird die Verantwortung einer Komponente auf einen Blick deutlich.
Eine Formularfeld-Komponente verwendet typischerweise useAtom, eine Senden-Schaltfläche useSetAtom und ein Label, das einen Zähler anzeigt, useAtomValue.
useSetAtom vs. useAtom
Was ist der entscheidende Vorteil von useSetAtom gegenüber useAtom?
Lektionsrückblick
useAtom liefert sowohl den Wert als auch den Setter; useAtomValue liefert nur den Wert und registriert ein Leseabonnement; useSetAtom liefert nur den Setter und löst bei einer Wertänderung kein erneutes Rendern aus. atomWithStorage speichert Werte in localStorage und unterstützt RESET. atomFamily erstellt für jeden Parameter eigene Atome für dynamische Listen.
Die Wahl des passenden Hooks minimiert unnötige erneute Renderings und macht die Absicht einer Komponente eindeutig.
Häufig gestellte Fragen
Ist die Lektion „Atoms mit useAtom lesen und schreiben“ kostenlos?
Ja — der vollständige Text von „Atoms mit useAtom lesen und schreiben“ 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 „Atoms mit useAtom lesen und schreiben“?
useAtom, useAtomValue und useSetAtom verwenden, um Atoms im gesamten Komponentenbaum zu lesen und zu aktualisieren 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 2 von 4.
Wie lange dauert die Lektion „Atoms mit useAtom lesen und schreiben“?
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
- Atoms: Die Einheit des Zustands in Jotai
- Atoms mit useAtom lesen und schreiben
- Abgeleitete und asynchrone Atoms
- Jotai vs. Zustand vs. Context: Wann welches Werkzeug geeignet ist