⊗jsrxPmRDEP 23 of 57 menu

Modificación de datos de productos en Redux store

Aprendimos a agregar productos, pero ¿qué pasaría si quisiéramos modificar la información del producto? Veamos cómo hacerlo en esta y en las siguientes lecciones.

Abramos nuestra aplicación de productos y accedamos al archivo productsSlice.js. Comencemos por lo que necesitamos para el slice products escribir otro reducer, que se ejecutará al actualizar un producto. Llamémoslo productUpdated y agreguémoslo en el campo reducers después del reducer productAdded. También pasémosle inmediatamente como parámetros state y action, en base a los cuales, como recordamos, funciona el reducer:

reducers: { productAdded(state, action) { state.push(action.payload) }, productUpdated(state, action) {}, },

Ahora pensemos, qué datos necesitaremos para actualizar el producto. Antes que nada - es el id, por él podremos encontrar el producto que nos interesa en el store. El resto de datos - nombre, descripción, precio y cantidad serán los que cambiaremos. Todos estos valores los obtendremos de la propiedad payload del objeto action, que nos llegará, y, si lo escribiéramos manual, se vería así, como se muestra a continuación. Note que el valor esperado de la propiedad payload - es un argumento, por lo tanto vamos a pasar aquí un objeto (hablaremos de esto más adelante):

{ type: 'products/productUpdated', payload: {id, name, desc, price, amount} }

Habiendo aclarado los puntos principales, ahora podemos escribir entre las llaves el código para productUpdated. Primero obtengamos del objeto action los datos modificados:

productUpdated(state, action) { const { id, name, desc, price, amount } = action.payload },

Ahora encontraremos por el id obtenido el producto que necesita ser modificado:

productUpdated(state, action) { const { id, name, desc, price, amount } = action.payload const desiredProduct = state.find(product => product.id === id) },

Si se encontró tal producto en el store, entonces reemplazaremos sus datos con los nuevos valores:

productUpdated(state, action) { const { id, name, desc, price, amount } = action.payload const desiredProduct = state.find(product => product.id === id) if (desiredProduct) { desiredProduct.name = name desiredProduct.desc = desc desiredProduct.price = price desiredProduct.amount = amount } },

Solo nos queda exportar el action creator para usar en el componente, que amablemente creará por nosotros createSlice. Agreguémoslo a la exportación al final del archivo, junto con el existente productAdded:

export const { productAdded, productUpdated } = productsSlice.actions

Abra su aplicación de estudiantes. Habiendo estudiado el material de la lección, en el archivo studentsSlice.js escriba otro reducer para productsSlice, que actualizará los datos del estudiante en el store en caso de que sean modificados por el usuario. Llámelo studentUpdated.

¿Y cómo se vería en este caso su objeto action? Envíe su código en la respuesta.

Al final del archivo exporte el action creator obtenido studentUpdated.

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