Redux es una biblioteca de JavaScript de código abierto que se utiliza para gestionar el estado de la aplicación. Es más comúnmente utilizado con bibliotecas como React o Angular para construir interfaces de usuario.
Redux se basa en el principio de tener un almacén central que guarda todo el estado de la aplicación. Cada componente puede acceder al estado almacenado sin tener que enviar callbacks por componentes que no necesitan el dato.
Este estado centralizado también facilita la creación de características complejas, como la actualización en vivo del servidor, el guardado automático, el deshacer/rehacer, y más.
Para actualizar el estado, Redux utiliza una arquitectura de “sólo lectura” y “flujo de datos unidireccional”. Este es el proceso:
1. Acciones: Cuando se necesita cambiar el estado de la aplicación, se dispara una “acción” que describe lo que ha sucedido. Por ejemplo, si estamos creando una aplicación de tareas, podríamos tener acciones como “CREAR_TAREA” o “COMPLETAR_TAREA”.
2. Reducers: Las acciones son enviadas a funciones llamadas “reducers” para actualizar el estado. Un “reducer” es una función que toma el estado actual y una acción, y devuelve un nuevo estado.
3. Store: El nuevo estado devuelto por los reducers se almacena en el almacén de Redux. La interfaz de usuario escucha los cambios en este almacén y se actualiza en consecuencia.
4. Despachar: Para desencadenar un cambio de estado, envías las acciones al almacén usando el método `dispatch(action)`.
En resumen, la interfaz de usuario dispara una acción, la acción es manejada por un reducer, y el reducer crea un nuevo estado que es almacenado en Redux. La interfaz de usuario escucha los cambios del estado y se actualiza si es necesario.