0Pricing
React Academy · Aula

Átomos: a unidade de estado no Jotai

Crie átomos primitivos com atom() e entenda como o design do Jotai sem Provider difere do Context.

Átomos: a unidade de estado no Jotai é uma aula grátis de React Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

O que é um átomo?

No Jotai, o estado é dividido em átomos: pequenas partes independentes de estado reativo. Cada átomo contém um único valor e é criado fora dos componentes com atom(initialValue).

Isso corresponde ao modelo mental de dividir o estado nas menores unidades significativas, em vez de usar um único objeto de armazenamento grande.

Átomos são reativos

Quando o valor de um átomo muda, somente os componentes inscritos nesse átomo específico são renderizados novamente. Os componentes que leem outros átomos não são afetados.

Essa reatividade refinada é a principal vantagem do Jotai em relação ao Contexto do React, que renderiza novamente todos os consumidores a cada alteração.

Criando átomos fora dos componentes

Defina os átomos no nível do módulo: const countAtom = atom(0). Isso garante que a identidade do átomo permaneça estável entre as renderizações e que ele não seja recriado a cada montagem do componente.

Os átomos são referências leves; eles não mantêm seu próprio valor. O valor fica armazenado no armazenamento do Jotai.

Sem Provider por padrão

Por padrão, o Jotai usa um armazenamento global implícito. Você não precisa envolver seu aplicativo em um Provider para começar a usar átomos, o que simplifica a adoção em projetos existentes.

Os átomos podem ser acessados globalmente por qualquer componente da árvore, sem passar propriedades por vários níveis ou encadear o contexto.

Provider explícito para estado com escopo

Quando você precisa de várias instâncias independentes da mesma árvore de componentes (por exemplo, dois formulários separados, cada um com seus próprios átomos de estado), envolva cada instância em um Provider do Jotai. Cada Provider cria um armazenamento isolado.

Isso é útil para arquiteturas de microfrontends ou layouts de página complexos com áreas de estado independentes.

Armazenamento global versus armazenamento com escopo

O armazenamento global mantém os átomos durante todo o tempo de vida do aplicativo. Um armazenamento de Provider com escopo é redefinido quando o Provider é desmontado, sendo ideal para caixas de diálogo modais ou estados no nível da página que não devem persistir globalmente.

Você pode até passar uma instância de armazenamento personalizada para o Provider, obtendo isolamento na renderização no servidor.

Comparação entre Jotai e Zustand

O Zustand usa um único objeto de armazenamento com seletores para evitar renderizações desnecessárias. O Jotai divide o estado em átomos, e cada componente se inscreve apenas nos átomos que lê.

O Jotai é mais natural para estados refinados da interface (valores de entrada individuais, sinalizadores de alternância). O Zustand se adapta bem a estados maiores e interconectados do aplicativo.

Jotai versus Contexto do React

O Contexto do React renderiza novamente todos os componentes consumidores sempre que o valor do contexto muda, mesmo que o componente consumidor se preocupe apenas com um campo do objeto de contexto.

O Jotai resolve isso: um componente que usa useAtom(nameAtom) só é renderizado novamente quando nameAtom muda, e não quando qualquer outro átomo muda.

Identidade e igualdade dos átomos

O Jotai usa a comparação Object.is por padrão para determinar se o valor de um átomo mudou. Se você definir um átomo com o mesmo valor que ele já contém, nenhuma renderização adicional será acionada.

Para objetos complexos, use o utilitário selectAtom para derivar um valor primitivo estável de um átomo grande, evitando renderizações adicionais quando campos não relacionados mudarem.

Átomos versus useState

useState é local a um único componente. Os átomos são compartilhados por toda a árvore de componentes sem a necessidade de passá-los explicitamente. Quando dois componentes irmãos leem o mesmo átomo, eles permanecem sincronizados automaticamente.

Isso elimina a necessidade de elevar o estado para compartilhá-lo entre componentes, mantendo as renderizações adicionais no mínimo.

Exemplos práticos de átomos

Átomos comuns: const themeAtom = atom('light'), const cartItemsAtom = atom([]), const selectedUserIdAtom = atom(null). Eles são definidos uma vez e importados em qualquer lugar do aplicativo.

Cada átomo é independente: atualizar cartItemsAtom não aciona renderizações adicionais nos componentes que leem apenas themeAtom.

Comportamento de nova renderização: Jotai vs Contexto

Em que Jotai difere do Contexto do React em relação à nova renderização?

Recapitulação da lição

Os átomos são a unidade fundamental de estado no Jotai, criados com atom(initialValue) fora dos componentes e compartilhados por toda a árvore sem Provider por padrão. Quando um átomo muda, somente seus assinantes são renderizados novamente.

Essa reatividade refinada é a principal vantagem do Jotai sobre o Contexto do React, e seu modelo de assinatura por átomo difere da abordagem de armazenamento único do Zustand.

Perguntas Frequentes

A aula “Átomos: a unidade de estado no Jotai” é grátis?

Sim — o texto completo de “Átomos: a unidade de estado no Jotai” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Átomos: a unidade de estado no Jotai”?

Crie átomos primitivos com atom() e entenda como o design do Jotai sem Provider difere do Context. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Átomos: a unidade de estado no Jotai”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Átomos: a unidade de estado no Jotai
  2. Lendo e escrevendo átomos com useAtom
  3. Átomos derivados e assíncronos
  4. Jotai versus Zustand versus Context: quando usar cada um
← Voltar para React Academy