首页 > 解决方案 > 尝试将新属性添加到 redux 状态时,javascript map.set 不起作用

问题描述

在我的 redux 状态下,我有一个如下地图列表

[
   {
       "id": "id1",
       "code": "code0"
   },
   {
       "id": "id2",
       "code": "code1"
   }
]

我无法将新属性添加到上述地图列表中。下面是我用来向地图添加新属性的代码

case SET_NEW_PROPERTY: {
   const a = currentState.get('reduxstate')
   a.forEach((mapObj, index) => {
      mapObj.set('newproperty', 'value')
   }
   return currentState.set('reduxstate', a)
}

我不确定为什么该设置不起作用。任何帮助表示赞赏。提前致谢。

标签: javascriptreactjsecmascript-6redux

解决方案


您应该plain object在 redux 商店中使用,在这种情况下,将新属性添加到Map不改变状态,它与Map.

当连接到 Pure React 组件时,由于 props 没有改变,UI 不会更新。

并且提到,当尝试plain object在reducer中添加属性时,你应该返回新对象,或者你可以使用combineReducers,当任何属性值发生变化时它会自动返回新对象。


推荐阅读