0Pricing
React Academy · Leçon

Lire et écrire des atomes avec useAtom

Utilisez useAtom, useAtomValue et useSetAtom pour lire et mettre à jour les atomes dans l’arbre de composants

Lire et écrire des atomes avec useAtom est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

useAtom : la fonction principale

useAtom(someAtom) renvoie [value, setter], à l'image de l'API useState. value correspond à l'état actuel de l'atome et setter le met à jour. Utilisez cette fonction lorsqu'un composant lit et écrit à la fois dans l'atome.

setter accepte soit une nouvelle valeur, soit une fonction de mise à jour : setCount(c => c + 1).

useAtomValue : accès en lecture seule

useAtomValue(someAtom) renvoie uniquement la valeur actuelle, sans setter. Utilisez cette fonction dans les composants d'affichage qui lisent l'état, mais ne le modifient jamais.

Comme le composant ne conserve pas de référence vers setter, l'intention est clairement documentée dans le code : ce composant se contente de lire.

useSetAtom : accès en écriture seule

useSetAtom(someAtom) renvoie uniquement la fonction setter. Surtout, cette fonction n'abonne pas le composant à la valeur de l'atome. Le composant n'est jamais rendu à nouveau lorsque l'atome change.

Utilisez-la pour les composants uniquement dédiés aux actions, comme les boutons qui déclenchent des modifications d'état sans afficher d'interface utilisateur dérivée.

Pourquoi useSetAtom est important pour les performances

Un composant qui appelle useSetAtom(countAtom) pour incrémenter un compteur ne sera jamais rendu à nouveau lorsque countAtom change, car il ne s'abonne pas à sa valeur. Seul le composant qui affiche le compteur est rendu à nouveau.

Cette optimisation est simple, mais puissante : séparez les composants qui écrivent de ceux qui lisent afin d'éviter les rendus à nouveau en cascade.

atomWithStorage pour la persistance

Importez atomWithStorage depuis jotai/utils. Utilisez-le exactement comme atom(), mais transmettez une clé de stockage comme premier argument : atomWithStorage('theme', 'light'). L'atome se synchronise automatiquement avec localStorage.

Au rechargement de la page, l'atome s'hydrate depuis localStorage. Tous les composants qui lisent l'atome récupèrent immédiatement la valeur persistante.

Réinitialiser atomWithStorage

Le symbole RESET de jotai/utils peut être transmis à setter pour un atome atomWithStorage : setter(RESET). Cela efface l'entrée de localStorage et réinitialise l'atome à sa valeur initiale.

C'est utile pour les flux de déconnexion ou les boutons « rétablir les valeurs par défaut » des pages de paramètres.

Familles d'atomes avec atomFamily

atomFamily de jotai/utils crée une fabrique qui renvoie un atome paramétré. Par exemple, atomFamily(id => atom(null)) crée un atome distinct pour chaque id unique fourni.

C'est idéal pour gérer un état propre à chaque élément, comme selectedAtom(itemId) ou expandedAtom(rowId), sans gérer un seul grand atome de correspondance.

Nettoyage des familles d'atomes

Les familles d'atomes peuvent croître sans limite si les ID s'accumulent. Utilisez atomFamily.setShouldRemove((createdAt, param) => ...) pour définir un prédicat de nettoyage que Jotai appelle lorsqu'il détermine quels membres obsolètes de la famille doivent être supprimés.

Pour les listes dont les éléments sont ajoutés et supprimés, nettoyez toujours les entrées de la famille d'atomes lorsque les éléments sont supprimés afin d'éviter les fuites de mémoire.

Outils de développement Jotai

Le paquet jotai-devtools fournit un panneau visuel qui répertorie tous les atomes actifs et leurs valeurs actuelles. Installez-le, encapsulez votre application dans DevTools et inspectez l'état des atomes en temps réel.

Chaque mise à jour d'un atome est consignée avec la valeur précédente et la valeur suivante, ce qui simplifie le débogage des interactions complexes entre atomes.

Exemple de rendus sélectifs

Dans une grande liste, un composant ListContainer peut utiliser useSetAtom(selectedIdAtom) pour mettre à jour la sélection sans s'abonner à selectedIdAtom. Seuls les composants ListItem individuels qui appellent useAtomValue(selectedIdAtom) sont rendus à nouveau lorsque la sélection change.

Ce modèle s'adapte bien à la croissance : l'ajout de milliers d'éléments à la liste ne ralentit pas les mises à jour de la sélection.

Combinaison des trois fonctions

Choisissez la fonction qui correspond au besoin de votre composant : useAtomValue pour le simple affichage, useSetAtom pour les actions seules, et useAtom lorsque vous avez besoin des deux. Cette conception intentionnelle de l'API rend la responsabilité du composant immédiatement claire.

Un composant de champ de formulaire utilise généralement useAtom ; un bouton d'envoi utilise useSetAtom ; une étiquette qui affiche un compteur utilise useAtomValue.

useSetAtom ou useAtom

Quel est le principal avantage d'utiliser useSetAtom plutôt que useAtom ?

Récapitulatif de la leçon

useAtom fournit à la fois la valeur et setter ; useAtomValue fournit uniquement la valeur, avec un abonnement en lecture ; useSetAtom fournit uniquement setter, sans nouveau rendu lorsque la valeur change. atomWithStorage conserve la valeur dans localStorage avec la prise en charge de RESET, et atomFamily crée des atomes propres à chaque paramètre pour les listes dynamiques.

Choisir la bonne fonction réduit les rendus à nouveau inutiles et explicite l'intention du composant.

Questions Fréquemment Posées

La leçon « Lire et écrire des atomes avec useAtom » est-elle gratuite ?

Oui — le texte complet de « Lire et écrire des atomes avec useAtom » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Lire et écrire des atomes avec useAtom » ?

Utilisez useAtom, useAtomValue et useSetAtom pour lire et mettre à jour les atomes dans l’arbre de composants Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Lire et écrire des atomes avec useAtom » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Atomes : unité d’état dans Jotai
  2. Lire et écrire des atomes avec useAtom
  3. Atomes dérivés et asynchrones
  4. Jotai, Zustand ou Context : lequel choisir
← Retour à React Academy