⊗jsrxPmRDARR 32 of 57 menu

Adición de un reductor a una aplicación Redux

En la lección anterior, creamos el componente UserReaction para que cada producto también tuviera reacciones de usuarios. Ahora necesitamos escribir un reductor que maneje el contador de reacciones cuando un usuario haga clic en el botón de una u otra reacción.

Abramos nuestra aplicación de productos, y en ella el archivo productsSlice.js con todos los reductores. Ahora en la propiedad reducers creemos otro reductor reactionClicked (podemos colocarlo primero - antes de productAdded, aunque no importa). Como es habitual, pasémosle como parámetros state y action:

reactionClicked(state, action) {},

Y ahora dentro de las llaves, que dejamos vacías en el paso anterior, escribamos el código para él. Primero, extraigamos la id del producto del payload del objeto action y el nombre de la reacción:

const { productId, reaction } = action.payload

Luego, del estado pasado, obtengamos el producto necesario:

const currentProduct = state.find(product => product.id === productId)

Y si existe tal producto, incrementemos el valor de la reacción pasada en 1:

if (currentProduct) { currentProduct.reactions[reaction]++ }

Eso es todo, nuestro código para reactionClicked está listo:

reactionClicked(state, action) { const { productId, reaction } = action.payload const currentProduct = state.find(product => product.id === productId) if (currentProduct) { currentProduct.reactions[reaction]++ } },

Al final del archivo, agreguemos la exportación del creador de acción resultante:

export const { reactionClicked, productAdded, productUpdated } = productsSlice.actions

Aquí es necesario señalar dos puntos importantes. Como recordarás de lecciones anteriores - actualizar directamente el valor en el código del reductor así no está permitido (mira esta línea: reactions[reaction]++), pero nos saldremos con la nuestra porque lo hacemos dentro de createSlice, que utiliza la biblioteca Immer. Ella se encargará de convertir nuestro código en una actualización "segura" del valor. Esto nos permite escribir cosas complejas de una manera más simple.

Lo siguiente que hay que recordar - el objeto action debe contener la mínima cantidad posible de información - solo la necesaria para indicar qué sucedió. No se deben hacer en él ningún tipo de cálculos. Todos los cálculos para actualizar el estado deben hacerse en el reductor, aquí se puede escribir toda la lógica necesaria para ello.

Abre tu aplicación de estudiantes y en el archivo studentsSlice.js agrega otro reductor voteClicked en el campo reducers, como se muestra en la lección. Escribe el código para él. La tarea de tu reductor - al hacer clic, incrementar el valor de vote (o voto), en el que se hizo clic, para el estudiante dado, en 1.

Al final del archivo, no olvides exportar el creador de acción resultante voteClicked.

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