我正在考虑使用 ES6 Map
对象为我进行哈希处理,而不是创建自定义哈希函数。但是,在我看来,它对不变性的支持不多,而不变性对于 React 和 Redux 来说都是一个关键。
我习惯于不使用任何库来实现不变性,而是只使用简单的解构:
const newObj = { ...prevObj, newKey: "value" }
或使用数组进行映射/过滤。
然而,ES6 Map
有直接更新对象本身的方法。
我能想到的是做这样的事情:
var myMap = new Map()
Var myNewMap = { ...myMap.set() }
this.setState({ myMap:myNewMap })
但我不确定这是否可行。
原文由 Vincent Rye 发布,翻译遵循 CC BY-SA 4.0 许可协议
我最近考虑过将 Map 数据结构与 react +redux 结合使用,但决定反对。
尽管有轻微的性能优势,但对于某些用例,使用 Map 主要是因为编译器更清楚会发生什么。您还可以免费获得一个尺码道具 :)
我认为有更多理由反对这种方法:
首先,redux 不喜欢不可序列化的对象 - 常见问题解答。如果你想使用 SSR 或将数据保存在 localStorage 中,它将不起作用。
您无法享受 redux 工具包中的许多功能,因为它们假定/创建简单的对象数据结构。例如 createEntityAdapter—— 我个人认为它很棒
您可以在每个 reducer 中创建一个新映射,但它可能会很快变得烦人,而且我不确定性能。
不过 React 并不关心那么多 :)