Configuração da Store

Esta página cobre como configurar sua store Redux, configurar hooks tipados e organizar a estrutura do projeto.

Estrutura de Pastas

Os projetos DEVEM seguir esta estrutura para consistência e manutenibilidade:

src/
  app/
    store.ts              # Configuração da store
    hooks.ts              # Hooks tipados (useAppDispatch/useAppSelector)
  shared/
    types/                # DTOs (API), modelos de domínio, mappers
    utils/                # Utilitários compartilhados
  services/
    client.ts             # Cliente base do RTK Query
    baseQuery.ts          # Query base com auth/chainId/retry
  features/
    user/
      user.client.ts      # Endpoints do RTK Query
      user.slice.ts       # Slice de estado de UI
      user.selectors.ts   # Selectors memoizados
      __tests__/          # Testes
    land/
      land.client.ts
      land.slice.ts
      land.selectors.ts
    credits/
      credits.client.ts
      credits.slice.ts
      credits.selectors.ts

Princípios de Organização de Pastas

  • Baseado em feature - Agrupar por domínio de negócio, não por papel técnico

  • Co-localização - Manter o código relacionado junto

  • Separação clara - Distinguir entre dados remotos (.client.ts) e estado local (.slice.ts)

Configuração da Store

A store DEVE ser configurada com o configureStore do RTK e incluir todo o middleware necessário.

Configuração Básica da Store

Opções de Configuração

Verificação de Serializabilidade

O serializableCheck o middleware valida que todo o estado é serializável. Configure-o para ignorar exceções conhecidas:

circle-exclamation

Dev Tools

Habilite o Redux DevTools em desenvolvimento para depuração:

Para depuração em produção (se necessário), use configuração específica:

Hooks Tipados

Crie versões tipadas de useDispatch e useSelector para melhor inferência de tipos e experiência do desenvolvedor.

Configuração dos Hooks

Uso em Componentes

Benefícios dos Hooks Tipados

  1. Autocomplete - IntelliSense completo para o formato do estado

  2. Segurança de Tipos - Capturar erros em tempo de compilação

  3. Refatoração - Renomear propriedades do estado com confiança

  4. Menos Boilerplate - Não há necessidade de especificar RootState repetidamente

Configuração do Provider

Envuelva sua app com o Provider do Redux:

Next.js App Router

Next.js Pages Router

React (Vite/CRA)

Configuração de Ambiente

Configure configurações específicas por ambiente:

Definições de Tipos

Crie definições de tipos compartilhadas para consistência:

Múltiplas Instâncias da Store

Para testes ou micro-frontends, você pode precisar de múltiplas instâncias da store:

Boas Práticas

1. Store Única

Use sempre uma única instância da store por aplicação:

2. Carregamento Lento de Reducers

Para code splitting, injete reducers dinamicamente:

3. Hot Module Replacement

Habilite HMR para reducers em desenvolvimento:

4. Persistência de Estado

Ao usar redux-persist, configure com cuidado:

Próximos Passos

Atualizado