Configuración de la tienda

Esta página cubre cómo configurar tu store de Redux, configurar hooks tipados y organizar la estructura del proyecto.

Estructura de carpetas

Los proyectos DEBEN seguir esta estructura para consistencia y mantenibilidad:

src/
  app/
    store.ts              # Configuración del store
    hooks.ts              # Hooks tipados (useAppDispatch/useAppSelector)
  shared/
    types/                # DTOs (API), modelos de dominio, mappers
    utils/                # Utilidades compartidas
  services/
    client.ts             # Cliente base de RTK Query
    baseQuery.ts          # Consulta base con auth/chainId/retry
  features/
    user/
      user.client.ts      # Endpoints de RTK Query
      user.slice.ts       # Slice de estado de la UI
      user.selectors.ts   # Selectores memoizados
      __tests__/          # Tests
    land/
      land.client.ts
      land.slice.ts
      land.selectors.ts
    credits/
      credits.client.ts
      credits.slice.ts
      credits.selectors.ts

Principios de organización de carpetas

  • Basado en funcionalidades - Agrupar por dominio de negocio, no por rol técnico

  • Co-ubicación - Mantener el código relacionado junto

  • Separación clara - Distinguir entre datos remotos (.client.ts) y estado local (.slice.ts)

Configuración del store

El store DEBE configurarse con el configureStore de RTK e incluir todo el middleware necesario.

Configuración básica del store

Opciones de configuración

Comprobación de serializabilidad

El serializableCheck el middleware valida que todo el estado sea serializable. Configúralo para ignorar excepciones conocidas:

circle-exclamation

Dev Tools

Habilita Redux DevTools en desarrollo para depuración:

Para depuración en producción (si es necesario), usa una configuración específica:

Hooks tipados

Crea versiones tipadas de useDispatch y useSelector para mejor inferencia de tipos y experiencia de desarrollo.

Configuración de hooks

Uso en componentes

Beneficios de los hooks tipados

  1. Autocompletado - IntelliSense completo para la forma del estado

  2. Seguridad de tipos - Capturar errores en tiempo de compilación

  3. Refactorización - Renombrar propiedades de estado con confianza

  4. Menos código repetitivo - No es necesario especificar RootState repetidamente

Configuración del Provider

Envuelve tu app con el Provider de Redux:

Next.js App Router

Next.js Pages Router

React (Vite/CRA)

Configuración de entorno

Configura opciones específicas por entorno:

Definiciones de tipos

Crea definiciones de tipos compartidas para consistencia:

Múltiples instancias del store

Para testing o micro-frontends, puede que necesites múltiples instancias del store:

Buenas prácticas

1. Store único

Siempre usa una única instancia de store por aplicación:

2. Carga perezosa de reducers

Para code splitting, inyecta reducers dinámicamente:

3. Hot Module Replacement

Habilita HMR para reducers en desarrollo:

4. Persistencia de estado

Al usar redux-persist, configúralo con cuidado:

Siguientes pasos

Última actualización