如何在异化器中替换处于状态的对象

时间:2018-07-02 08:35:26

标签: reactjs redux reducers

   for f,v in zip(schema.fields, schema.names):
        if v == colname:
         updatedschema.add(v, datatype, False, metadata = {"test": "value"})
        else:
         updatedschema.add(f)

所以我有这个初始状态。这是我关于减速器的案例陈述之一

我正在尝试用新的用户对象替换对象(用户)。 所以我试图映射数组,然后用新旧名称替换它。旧名称和新名称正确输入。但是,当前这会将10个对象的数组更改为10个对象的数组,而数组的最后一项是10个对象的数组。非常令人困惑,但本质上是

数组从长度10增长到长度11

即使应该保持不变

并且数组的最后一项(本身就是数组)是我想要处于新状态的数组

这是否有意义?

基本上它很近,但是还不很远

1 个答案:

答案 0 :(得分:0)

您不需要做spread syntax,而是要做return the mapped value,因为您要遍历化简器状态并分别克隆映射中的内部对象。

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