Reactjs 如何替换减速器中处于状态的对象

Reactjs 如何替换减速器中处于状态的对象,reactjs,redux,reducers,Reactjs,Redux,Reducers,所以我有这个初始状态。这是我对减速机的一个案例陈述 我试图用一个新的用户对象替换一个用户对象。 因此,我试图映射数组,然后用新旧名称替换它。旧名字和新名字都是正确的。但是,当前正在将10个对象的数组更改为10个对象的数组,再加上数组的最后一项是10个对象的数组。非常混乱,但本质上 阵列的长度从10增加到11 即使它应该保持不变 数组的最后一项是数组本身,它是我想要的处于新状态的数组 这有意义吗 基本上,它很接近,但不是很接近而不是使用扩展语法,您所需要做的就是返回映射值,因为您正在遍历reduc

所以我有这个初始状态。这是我对减速机的一个案例陈述

我试图用一个新的用户对象替换一个用户对象。 因此,我试图映射数组,然后用新旧名称替换它。旧名字和新名字都是正确的。但是,当前正在将10个对象的数组更改为10个对象的数组,再加上数组的最后一项是10个对象的数组。非常混乱,但本质上

阵列的长度从10增加到11

即使它应该保持不变

数组的最后一项是数组本身,它是我想要的处于新状态的数组

这有意义吗

基本上,它很接近,但不是很接近

而不是使用扩展语法,您所需要做的就是返回映射值,因为您正在遍历reducer状态并单独克隆映射中的内部对象

const initialState = []

case UPDATE_USER: {
  console.log(action, "this is action");
  return [
    ...state,
    state.map(
      user =>
        user.name === action.oldName
          ? {
              ...user,
              name: action.newName
            }
          : user
    )
  ];
}

不应为state.users.mapnope,将更改代码1sec@karthikchangedbrill,所以我的问题是我返回了一个额外的数组,我想??我有点明白了。你能再解释一下为什么当我返回一个数组时,它添加了一个额外的数组吗?但我会接受这个答案。谢谢映射时形成数组,返回时创建新数组,方法是使用扩展语法克隆状态,然后将其最后一项作为映射返回的数组追加
case UPDATE_USER: {
  console.log(action, "this is action");
  return state.map(
      user =>
        user.name === action.oldName
          ? {
              ...user,
              name: action.newName
            }
          : user
    )
}