Una aplicación está repleta de datos dinámicos que se conectan entre sí y modifican lo que un usuario final vé
Los "Single Page Applications" presentan una nueva forma de cargar datos en las aplicaciones web
Todo el contenido de la una aplicación se carga en una sola página y cambia dinámicamente
Los datos representan entidades
Una entidad puede usarse para representar una persona
Los datos de una persona pueden verse en multiples partes de una aplicación
Una buena práctica es dividir las responsabilidades
Una forma de división en aplicaciones web es división por componentes
Cada componente tiene una funcionalidad y puede estar dividida en más componentes
Cada vez que un dato dentro de la aplicación cambia, el estado de la aplicación entera cambia
Si el estado de una aplicación cambia la información que se le muestra al usuario tiene que cambiar
Nadie puede modificar el estado directamente
Los cambios deben de ser procesados por un manejador de cambios
Todos los que ven el estado deben ser informados del cambio
Los cambios que son generados en los componentes hijos que afectan los padres tienen que comunicar el cambio
El cambio en el padre es comunicado a los respectivos componentes que les compete
Se crea una cadena de comunicación
El cambio es informado al manejador
El manejador hace el cambio sobre el estado
Quién le competa ver el estado es informado del cambio
La acción es la descripción del cambio que se va a realizar
No ejecuta ningún código
Solo contiene información relevante para las otras piezas de esta arquitectura
El mecanismo de comunicación entre las Actions y el Store
El Dispatcher sabe a qué Store debe hacer qué modificaciones
Es el corazón central del flujo de información
Contiene el estado de la aplicación
Reacciona a las acciones
Informa cuando hay modificaciones en el estado
Se introduce el concepto de Reducers para hacer cambios sobre el store
Un reducer es una función pura que toma el estado de la aplicación y un Action para retornar un nuevo estado de la aplicación
Al ser funciones puras pueden ser combinadas
Tienen que mantenerse puras para que el estado sea predecible
Una función es pura siempre y cuando recibiendo los mismos parámetros de entrada generen el mismo resultado
Un reducer debe ser una función pura para que sea consistente todas las veces que sea invocado
Todos tienen acceso al store
Solo los reducers pueden modificarlo
Al modificarlo se crea un estado nuevo
Se garantiza que los datos son consistentes
[
{
description: "Hace fácil la transferencia de datos ente componentes",
value: true
},
{
description: "Mejora el redimiento",
value: true
},
{
description: "Guía a tener una mejor arquitectura",
value: true
},
{
description: "Fácil de implementar",
value: false
},
{
description: "Es código nuevo todo el tiempo",
value: false
}
]
Todo reducer termina siendo un switch case con muchos casos
Crear los Reducers es repetitivo
Los reducers suelen tener poca o nada de lógica
Manejo de datos asíncronos con programación reactiva
Un Selector da la posibilidad de suscribirse a una parte del estado de la aplicación en lugar de todo el estado
Al leer datos del estado un componente se suscribe y recibe los cambios del estado de forma inmediata