尝试将新属性添加到 redux 状态时,javascript map.set 不起作用

标签 javascript reactjs ecmascript-6 redux

我的 redux 状态中有一个如下所示的 map 列表

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

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

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

我不确定为什么该装置无法工作。任何帮助表示赞赏。提前致谢。

最佳答案

你应该在redux存储中使用plain object,在这种情况下,向Map添加新属性不会改变状态,它与Map<的引用相同

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

还有,当尝试在reducer中向plain object添加属性时,你应该返回新对象,或者你可以使用combineReducers,它会自动返回新对象任何属性值发生更改。

关于尝试将新属性添加到 redux 状态时,javascript map.set 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52305707/

相关文章:

javascript - 如何在react-native中渲染多个组件并设置单独的状态?

JavaScript 错误 : Cannot read property 'includes' of undefined

enums - 可以将值映射到名称的 ES6 只读枚举

javascript - 将 Prop 从一个组件传递到另一个组件时,对象作为 react 子组件(找到带有键的对象)无效

javascript - react 创建通用输入组件

javascript - 无法添加具有指定类的 <select> 标记

javascript - jquery 帮助需要 - 仅将数据放在同一 div 下

javascript - 在Chrome扩展程序中gzip JavaScript文件是否值得?

javascript - Selenium如何处理IE找不到元素

reactjs - Expo 应用程序中的 Firebase 无密码电子邮件身份验证错误