- Redux tiene un método para crear un store, este se crea con
createStore()
- En redux todas las actualizaciones de estado son disparados por
acciones despachadoras
- Un
action
es simplemente un objeto javascript que contiene información sobre unaction event
que ha ocurrido - El
store
recibe esos objetos de acciones entonces actualiza su estado respectivamente - A veces un
action
trae algunos datos, por ejemplo: puede traer un nombre de usuario despues que un usuario inicia sesión
- Debe contener una propiedad
type
que especifica el tipo de acción que ocurre - Pensar que las
redux actions
son mensajeros que entregan información sobre lo que pasa en la aplicación. El store entonces conduce los negocios de actualización de estado basado en la acción que ocurrió
- Un
action creator
es una funcion de javascript que retorna unaction
- El métoodo
dispatch
es lo que se usa para despachar acciones alstore
- Despues de que una acción es creada y despachada, el store necesita saber cómo responder a esa acción, esto último es
trabajo de un
reducer
Reducers
son los reponsables de las modificaciones de estado que toman lugar como respuesta a una acción- Un
reducer
toma como argumentos elstate
yaction
y siempre retorna un nuevo estado - !Es importante mencionar que lo anterior es únicamente rol del
reducer
¡ - !Nunca llama a un endpoint de una
API
ni trae sorpresas escondidas¡
- El
state
es de solo lectura,la función reductora es la que se encarga de retornar una nueva copia del estado y nunca modificarlo directamente - Nunca debes mutar el estado: estado inmutable significa que nunca modificas el estado directamente, en vez, regresas una nueva copia del estado
- Otro método que contiene
store
essubscribe
, te permite suscribir funciones escuchadoras alstore
, que son llamadas cuando sea que una accion es despachada contra elstore
- Un ejemplo de uso sería para registrar un mensaje cuando una acción es recibida y el store es actualizado
- Redux proporciona composición de reductor,como una solución a un modelo de estado complejo
- Definir múltiples
reducers
para manejar diferentes piezas del estado de tu aplicación, entonces compones esosreducers
juntándolos en un solo reductor raíz - El reductor raíz es pasado al método
createStore
- Para juntar los
reducers
en un reductor raíz, redux proporciona un métodocombineReducers
- Cuando necesitas hacer llamadas a
endpoints
asincronamente, redux proveeRedux thunk middleware
- Para incluir
Redux thunk middleware
lo pasas como argumento aRedux.applyMiddleware()
- Una vez pasado,
Redux.applyMiddleware()
es pasado como argumento acreateStore()
- Es común enviar una acción antes de iniciar cualquier comportamiento asincrono para que el estado de su aplicación sepa que se están solicitando algunos datos (este estado podría mostrar un icono de carga, por ejemplo). Luego, una vez que recibe los datos, envía otra acción que transporta los datos como una carga útil junto con la información de que la acción se ha completado.
- Recuerde que estás pasando el
dispatch
como parámetro a este creador de acción especial. Esto es lo que usará para despachar sus acciones, simplemente pase la acción directamente aldispatch
y el middleware se encargará del resto.
- Cuando el estado es un arreglo se usan los operadores
...
ysplice
- Cuando el estado es un objeto se puede usar el método
assign
deObject