0Pricing
React Academy · Lezione

Atomi: l'unità di stato in Jotai

Creare atomi primitivi con atom() e comprendere le differenze tra il design senza Provider di Jotai e Context

Atomi: l'unità di stato in Jotai è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Che cos’è un atomo?

In Jotai, lo stato è suddiviso in atomi: piccole unità indipendenti di stato reattivo. Ogni atomo contiene un singolo valore e viene creato al di fuori dei componenti con atom(initialValue).

Questo riflette il modello mentale che consiste nel suddividere lo stato nelle più piccole unità significative, anziché utilizzare un unico grande oggetto store.

Gli atomi sono reattivi

Quando cambia il valore di un atomo, viene eseguito nuovamente il rendering solo dei componenti che si sono sottoscritti a quello specifico atomo. I componenti che leggono altri atomi non vengono interessati.

Questa reattività granulare è il principale vantaggio di Jotai rispetto a React Context, che esegue nuovamente il rendering di tutti i consumer a ogni modifica.

Creazione degli atomi all’esterno dei componenti

Definisca gli atomi a livello di modulo: const countAtom = atom(0). In questo modo l’identità dell’atomo rimane stabile tra i rendering e l’atomo non viene ricreato a ogni montaggio del componente.

Gli atomi sono riferimenti leggeri; non contengono direttamente il proprio valore. Il valore risiede nello store di Jotai.

Senza Provider per impostazione predefinita

Per impostazione predefinita, Jotai utilizza uno store globale implicito. Non è necessario racchiudere l’applicazione in un Provider per iniziare a utilizzare gli atomi, semplificando l’adozione in progetti esistenti.

Gli atomi sono accessibili globalmente da qualsiasi componente dell’albero, senza dover passare props tra componenti o propagare il contesto.

Provider esplicito per lo stato con ambito

Quando sono necessarie più istanze indipendenti dello stesso albero di componenti, ad esempio due moduli separati, ciascuno con i propri atomi per lo stato del modulo, racchiuda ogni istanza in un Provider di Jotai. Ogni Provider crea uno store isolato.

Questo è utile nelle architetture micro-frontend o nei layout complessi con isole di stato indipendenti.

Store globale e store con ambito

Lo store globale conserva gli atomi per tutta la durata dell’applicazione. Lo store di un Provider con ambito viene reimpostato quando il Provider viene smontato, risultando ideale per finestre modali o per lo stato a livello di pagina che non deve essere mantenuto globalmente.

È anche possibile passare a Provider un’istanza di store personalizzata per isolare il rendering lato server.

Confronto tra Jotai e Zustand

Zustand utilizza un unico oggetto store con selettori per evitare rendering non necessari. Jotai suddivide lo stato in atomi e ogni componente si sottoscrive solo agli atomi che legge.

Jotai è più naturale per uno stato dell’interfaccia granulare, come i singoli valori degli input e i flag dei toggle. Zustand è adatto agli stati applicativi più grandi e interconnessi.

Jotai e React Context

React Context esegue nuovamente il rendering di ogni componente consumer ogni volta che cambia il valore del contesto, anche se il componente utilizza solo un campo dell’oggetto di contesto.

Jotai risolve questo problema: un componente che utilizza useAtom(nameAtom) viene renderizzato nuovamente solo quando cambia nameAtom, non quando cambia un altro atomo.

Identità ed uguaglianza degli atomi

Per impostazione predefinita, Jotai utilizza il confronto Object.is per determinare se il valore di un atomo è cambiato. Se si assegna a un atomo lo stesso valore che già contiene, non viene attivato alcun nuovo rendering.

Per gli oggetti complessi, utilizzi l’utilità selectAtom per ricavare un valore primitivo stabile da un atomo di grandi dimensioni, evitando nuovi rendering quando cambiano campi non correlati.

Atomi e useState

useState è locale a un singolo componente. Gli atomi sono condivisi nell’intero albero dei componenti senza doverli passare esplicitamente. Quando due componenti fratelli leggono lo stesso atomo, rimangono automaticamente sincronizzati.

In questo modo non è necessario sollevare lo stato per condividerlo tra componenti, mantenendo al contempo al minimo i nuovi rendering.

Esempi pratici di atomi

Atomi tipici: const themeAtom = atom('light'), const cartItemsAtom = atom([]), const selectedUserIdAtom = atom(null). Vengono definiti una sola volta e importati ovunque nell’applicazione.

Ogni atomo è indipendente: l’aggiornamento di cartItemsAtom non attiva nuovi rendering nei componenti che leggono solo themeAtom.

Comportamento del nuovo rendering: Jotai vs Context

In che modo Jotai differisce da React Context per quanto riguarda il nuovo rendering?

Riepilogo della lezione

Gli atom sono l'unità fondamentale dello stato in Jotai, creati con atom(initialValue) al di fuori dei componenti e condivisi nell'intero albero senza Provider per impostazione predefinita. Quando un atom cambia, eseguono nuovamente il rendering solo i suoi sottoscrittori.

Questa reattività a grana fine è il principale vantaggio di Jotai rispetto a React Context e il suo modello di sottoscrizione per atom è diverso dall'approccio a store singolo di Zustand.

Domande Frequenti

La lezione «Atomi: l'unità di stato in Jotai» è gratuita?

Sì — il testo completo di «Atomi: l'unità di stato in Jotai» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Atomi: l'unità di stato in Jotai»?

Creare atomi primitivi con atom() e comprendere le differenze tra il design senza Provider di Jotai e Context Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Atomi: l'unità di stato in Jotai»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Atomi: l'unità di stato in Jotai
  2. Leggere e scrivere atomi con useAtom
  3. Atomi derivati e asincroni
  4. Jotai, Zustand e Context: quale usare e quando
← Torna a React Academy