⊗jsrxPmWFRs 12 of 57 menu

Reductores en Redux

En la lección anterior, usando la función createSlice creamos un segmento (slice) para los productos products y un reductor que actualizará este segmento, almacenado en el store. Recuerdo nuevamente, que en Redux los datos del estado se cambian mediante reductores.

Hay que recordar que sobre los reductores se imponen una serie de restricciones. El reductor actualiza el estado solo en base a los valores recibidos del estado actual y del objeto action, y luego decide cómo cambiar el estado y devuelve su nuevo valor.

Sabemos que, por defecto, los objetos y arrays en JavaScript son mutables. También sabemos que no se puede cambiar el state directamente, en tal caso hay que trabajar solo con copias. El reductor también debe obedecer esta regla. Pero escribir esta lógica manualmente puede ser una tarea bastante tediosa y compleja, y aquí viene al rescate la función createSlice, que utiliza la biblioteca Immer, transformando tu código 'mutable' en 'inmutable'. Así, pecar y simplificar la vida solo se permite al usar las funciones createSlice o createReducer.

Entre las restricciones del reductor también está el uso de lógica asíncrona, el cálculo de valores aleatorios y la ejecución de otros "efectos secundarios". Y ahora, habiéndonos familiarizado más con el reductor, volvamos a nuestra aplicación de productos.

En nuestra aplicación tenemos un store, que creamos en lecciones anteriores, pero por ahora no hay nada en él. Abramos nuestro archivo store.js y agreguemos un poco de código. Para empezar, importemos en él la función reducer para productos:

import productsReducer from '../parts/products/productsSlice'

Ahora, como reductor, podemos especificar la función importada productsReducer:

export default configureStore({ reducer: { products: productsReducer } })

Con la línea anterior le decimos a nuestro store, que ahora cuando ocurra una action todos los datos para el segmento state.products serán actualizados por el reductor productsReducer.

Ahora puedes ejecutar la aplicación (¡observa que ha desaparecido la advertencia en la consola sobre un reductor no válido!), abrir Redux DevTools en el navegador y explorar sus pestañas. Por ejemplo, al hacer clic en la pestaña State dentro de la pestaña Inspector podemos ver nuestros dos objetos con productos, que se mostraron como valor inicial del estado al iniciar la aplicación por primera vez. En la pestaña Log monitor vemos qué segmentos tiene el estado global - este es el segmento products, que incluye dos objetos. También echa un vistazo a la pestaña Chart.

Abre tu aplicación de estudiantes y cambia el código del archivo store.js, como se muestra en la lección.

Ejecuta en el navegador tu aplicación y explora las pestañas de la extensión Redux DevTools.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar