首页 > 解决方案 > 将项目添加到数组(状态)并且它正在更新状态中的先前记录

问题描述

我的状态有一个对象数组,每次RECIPE_UPDATED触发动作时,都会将一个新对象添加到数组中。数组的第一项是由 action 生成的FIRST_RECIPE。请参阅下面的操作和减速器。

问题发生在每次RECIPE_UPDATED调用操作时,它都会将新项目添加到数组中,但它也会更改之前数组中的最后一项,到目前为止我无法理解它为什么会这样。

这些是动作创建者:

export const getFirstRecipe = (recipe) => ({
  type: "FIRST_RECIPE",
  payload: recipe,
});

export const updateRecipe = (data) => ({
  type: "UPDATED_RECIPE",
  payload: data,
});

这些是减速器:

const recipeHistoryReducer = (state = [], action) => {
  switch (action.type) {
    case "FIRST_RECIPE":
      return [action.payload];

    case "UPDATED_RECIPE":
      return [...state, action.payload];

    default:
      return state;
  }
};

export default recipeHistoryReducer;

任何想法如何解决这个问题?

标签: arraysreact-reduxstatestore

解决方案


问题解决了。

它根本与减速器或动作无关。整个问题是一个错误,我在没有使用扩展运算符的情况下将具有值的对象分配到一个新变量中,所以整个事情都被立即改变了。

问题解决了。乔治


推荐阅读