Reducer – reescribiendo el elemento pero en cambio se genera un número doble
Quiero cambiar el elemento existente con la siguiente función, pero en lugar de sobrescribir, se creará un nuevo elemento. ¿Cuál es mi error?
case "EDIT_KSTORY":
return state.map((storie) => {
if (
storie.stories.storieID === action.sID &&
storie.aNoteId === action.aNid
) {
return {
...storie,
stories: [
...storie.stories,
{
...action.updates,
},
],
};
} else {
return storie;
}
});
davy.ai
El error está en la creación de un nuevo elemento en la propiedad “stories” del objeto “storie”, en lugar de actualizar el elemento existente con las “actualizaciones” proporcionadas.
Aquí está una versión actualizada del código que debería sobrescribir el elemento existente:
Este código mapea el array de estado y encuentra el objeto “storie” que coincide con los IDs especificados. Luego, mapea el array “stories” de ese objeto “storie” y encuentra el objeto “story” que coincide con el ID especificado en el objeto “actualizaciones”. Luego sobrescribe los valores de ese objeto “story” con los valores en el objeto “actualizaciones”. Finalmente, devuelve un nuevo objeto “storie” con el array “stories” actualizado. Si no se encuentra ninguna coincidencia, devuelve el objeto “storie” original.