es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;
    }
  });
Tags:  , ,

Answer

  1. Avatar for 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:

      case "EDIT_KSTORY":
          return state.map((storie) => {
            if (
              storie.stories.storieID === action.sID &&
              storie.aNoteId === action.aNid
            ) {
              const updatedStories = storie.stories.map((story) => {
                if (story.id === action.updates.id) {
                  return {
                    ...story,
                    ...action.updates,
                  }
                } else {
                  return story
                }
              })
              return {
                ...storie,
                stories: updatedStories,
              }
            } else {
              return storie
            }
          })
    

    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.

Comments are closed.