将项目添加到数组(状态)并且它正在更新状态中的先前记录

Posted

技术标签:

【中文标题】将项目添加到数组(状态)并且它正在更新状态中的先前记录【英文标题】:Adding an item to an array (state) and it is updating the previous record in the state 【发布时间】:2021-02-19 19:28:07 【问题描述】:

我的状态有一个对象数组,每次触发动作RECIPE_UPDATED 时,都会向数组中添加一个新对象。数组的第一项由操作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;

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

【问题讨论】:

【参考方案1】:

问题已解决。

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

问题解决了。 豪尔赫

【讨论】:

以上是关于将项目添加到数组(状态)并且它正在更新状态中的先前记录的主要内容,如果未能解决你的问题,请参考以下文章

更新反应状态而不覆盖先前的状态

将数组添加到父组件的状态

将项目添加到 redux-toolkit 中的嵌套数组

如何正确更新反应钩子状态中的数组

如何设置状态来更新 React 中的数组?

反应挂钩以根据先前的状态值更新状态[重复]