Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Conceptos Previos sobre Reductores
Como se describe en "Conceptos Fundamentales de Redux" Parte 3: Estado, Acciones y Reductores, una función reductora de Redux:
-
Debe tener una firma
(previousState, action) => newState, similar al tipo de función que pasarías aArray.prototype.reduce(reducer, ?initialValue) -
Debe ser "pura", lo que significa que el reductor:
- No realiza efectos secundarios (como llamar a APIs o modificar objetos/variables externos).
- No llama a funciones no puras (como
Date.nowoMath.random). - No muta sus argumentos. Si actualiza el estado, no debe modificar el objeto de estado existente directamente. En su lugar, debe generar un nuevo objeto con los cambios necesarios. Este mismo enfoque debe aplicarse a cualquier subobjeto dentro del estado que actualice.
Nota sobre inmutabilidad, efectos secundarios y mutación
La mutación se desaconseja porque generalmente rompe la depuración de viaje en el tiempo y la función
connectde React Redux:
- Para el viaje en el tiempo, las Redux DevTools esperan que al reproducir acciones registradas se obtenga un valor de estado, sin alterar nada más. Los efectos secundarios como mutaciones o comportamientos asíncronos alterarán el comportamiento entre pasos durante el viaje, rompiendo la aplicación.
- En React Redux,
connectverifica si los props devueltos pormapStateToPropshan cambiado para determinar si un componente necesita actualizarse. Para mejorar el rendimiento,connecttoma atajos que dependen de la inmutabilidad del estado y usa comprobaciones superficiales de igualdad referencial. Esto significa que los cambios en objetos y arrays por mutación directa no serán detectados, y los componentes no se volverán a renderizar.Otros efectos secundarios como generar IDs únicos o marcas temporales en un reductor también hacen el código impredecible y más difícil de depurar y probar.
Debido a estas reglas, es crucial comprender completamente los siguientes conceptos antes de avanzar a otras técnicas específicas para organizar reductores en Redux:
Conceptos Básicos de Reductores en Redux
Conceptos clave:
-
Pensar en términos de estado y estructura del estado
-
Delegar responsabilidad de actualización por porción del estado (composición de reductores)
-
Reductores de orden superior
-
Definir el estado inicial del reductor
Lecturas recomendadas:
-
"Conceptos Fundamentales de Redux" Parte 3: Estado, Acciones y Reductores
-
Documentación de Redux: Implementación de Historial Deshacer
-
Stack Overflow: Nombres de claves del estado y
combineReducers
Funciones Puras y Efectos Secundarios
Conceptos clave:
-
Efectos secundarios
-
Funciones puras
-
Cómo pensar en términos de combinación de funciones
Lista de lecturas:
Gestión de datos inmutables
Conceptos clave:
-
Mutabilidad vs inmutabilidad
-
Actualización segura e inmutable de objetos y arrays
-
Evitar funciones y sentencias que muten el estado
Lista de lecturas:
Normalización de datos
Conceptos clave:
-
Estructura y organización de bases de datos
-
División de datos relacionales/anidados en tablas separadas
-
Almacenar una única definición para cada elemento
-
Referenciar elementos mediante IDs
-
Usar objetos indexados por IDs como tablas de búsqueda, y arrays de IDs para gestionar el orden
-
Asociar elementos en relaciones
Lista de lecturas: