Sobre o projeto
Valtio é uma biblioteca de gerenciamento de estado construída em torno de proxies do JavaScript, utilizável com React e em JavaScript puro. Sua ideia central é simples: envolva um objeto de estado com `proxy()` e ele se torna um proxy autoconsciente que pode ser mutado como um objeto normal de qualquer lugar no seu código.
Principais capacidades descritas no README:
- **Estado proxy**: `proxy({ count: 0, text: 'hello' })` cria estado mutável; mutações como `++state.count` funcionam como em objetos comuns.
- **Integração com React**: `useSnapshot(state)` retorna um snapshot local para renderização. Os componentes só são re-renderizados quando as partes acessadas do estado mudam, o que o projeto descreve como otimizado para renderização. Uma opção `sync: true` desativa o agrupamento (batching) para casos como entradas controladas.
- **Assinaturas**: `subscribe` funciona no estado inteiro ou em subobjetos, e `subscribeKey` tem como alvo valores primitivos. Um utilitário `watch` assina automaticamente com base no uso.
- **Suporte a Suspense**: Compatível com o hook `use` do React 19 para ler dados assíncronos mantidos no estado, com o componente pai tratando fallback e erros.
- **Objetos não rastreados**: `ref` mantém objetos grandes ou especiais (como nós do DOM) dentro do estado sem aplicar proxy a eles.
- **Uso em vanilla**: `valtio/vanilla` exporta `proxy`, `subscribe` e `snapshot` para uso fora do React.
- **Utilitários**: `useProxy` oferece um proxy superficial simplificado para iniciantes; `proxySet` e `proxyMap` imitam o comportamento nativo de Set e Map; propriedades computadas podem ser definidas com getters de objeto.
- **Ferramentas de desenvolvimento**: Integração com a Redux DevTools Extension para objetos simples e arrays.
- **Compatibilidade**: O Valtio v2 tem como alvo React 18 e superior, depende apenas de `react`, e funciona com renderizadores como react-dom, react-native e react-three-fiber, bem como Node.js e Next.js.
O README também observa ressalvas de tipagem TypeScript em torno do tipo de snapshot somente leitura, alerta sobre o comportamento de `this` em métodos (recomendando arrow functions), e aponta para um plugin de eslint além de receitas da comunidade para organizar ações, persistir estado, usar contexto e dividir/compor estado.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.