Dos herramientas para monitorear los cambios del estado con Redux

Cuando usamos Redux nos encontramos con un pequeño problema: como monitorear exactamente las partes del estado que han cambiado.

Diseño web
3 minutos
Hace 7 años
Dos herramientas para monitorear los cambios del estado con Redux

¡Accede a cientos de cursos
con solo un pago al año!

Blog Microbanner

Cuando usamos Redux nos encontramos con un pequeño problema y es que cuando despachamos una acción para que una función reductora modifique el estado, no sabemos si realmente lo hizo, y si lo hizo, no sabemos si lo hizo como deseamos o si afectó la parte del estado que precisamente queríamos afectar o quedaron afectadas otras partes que no debimos tocar, etc. En fin, varias situaciones pudieron haberse dado luego de despachar una acción.

En este artículo te mostraré dos paquetes de npm para poder estar al tanto de lo que sucede cada que una acción es despachada en tu app.

Ejemplo:

Tengo un array de 8 películas en mi estado global y una acción ADD\_FAVORITES es despachada cuando le doy click a un botón que tiene cada película. Además, en mi estado global tengo un array favorites recibe esa película y la concatena a sí misma para guardar todas mis películas favoritas.

1. Redux-logger

Cómo todo paquete npm la instalación la puedes realizar con un simple npm install redux-logger o en caso que utilices yarn puedes ejecutar yarn add redux-logger

Este paquete es un middleware, el cual intercepta toda acción despachada e imprime en consola, antes de ejecutar la función reductora, la acción que fue despachada junto con 3 datos importantes . Esos datos són:

  • PrevState:  El objeto que representa cómo está el estado global de la aplicación antes de ejecutar este cambio.
  • Action: El objeto que recibe la función reductora para actualizar el estado global. Generalmente compuesto por 2 valores: El tipo de acción que se despachó y el objeto o array de objetos que se agregarán, encontrarán o eliminarán del estado.
  • NextState: El objeto que representa cómo quedará el estado global luego de que la función reductora se ejecute.

Redux Logger

Cómo se puede ver en la imagen. Previamente mi Array favorites estaba vacío, luego de ejecutar la acción ADD_FAVORITES el nuevo estado será el Array favorites con un elemento.

Para implementarlo solamente debes pasar como tercer parámetro de tu función createStore la función applyMiddleware (luego de importarla) y a su vez esta función recibirá el paquete logger como parámetro. 

1import {applyMiddleware, createStore} from "redux" 2import {logger} from "redux-logger" 3 4//... aquí va tú código 5 6export default createStore( 7 reducer, 8 initialState, 9 applyMiddleware(logger, thunk) 10)

2. Redux DevTools

Para instalarlo utiliza npm install redux-devtools-extension y con yarn sería yarn add redux-devtools-extension

Además de eso deberás descargar la extensión Redux DevTools para tu navegador. Para chrome lo encontrarás en la Chrome Web Store

Redux DevTools Chrome extesion

Luego de eso deberás importar el paquete y envolver tu función applyMiddleware de tu createStore en store.js de la siguiente manera

1import {composeWithDevTools} from "redux-devtools-extension" 2 3//... aquí va tú código 4 5export default createStore( 6 reducer, 7 initialState, 8 composeWithDevTools(applyMiddleware(logger)) 9)

Una vez inicies tu aplicación encontrarás una nueva pestaña en tu sección DevTools de Chrome llamada Redux. Ahí podrás monitorear cada acción despachada y cada cambio.

Cada vez que el estado global de tu aplicación sea modificado podrás ver los cambios muy detalladamente. Utilizando el ejemplo del punto anterior se vería así.

Redux Devtools Tab

A la izquierda verás un listado de todas las acciones que se han despachado hasta el momento. A la izquierda verás, por defecto, qué es lo que cambió en tu estado (diff), puedes ver este cambio en modo árbol (tree) o en modo completo/crudo (raw).

También puedes ver la pestaña State que te mostrará cómo quedó el estado global ahora que la función reductora ha sido ejecutada.

Store State - Redux DevTools

Te dejo cómo tarea probar las muchas opciones que trae esta extensión. Seguro que te divertirás.

Espero que este artículo te ayude y el desarrollo y manejo de tus aplicaciones con Redux sean mejores.

Hasta otra oportunidad.

Comentarios de los usuarios