将 ES6 Map 与 React 和/或 Redux 结合使用

新手上路,请多包涵

我正在考虑使用 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 许可协议

阅读 687
1 个回答

我最近考虑过将 Map 数据结构与 react +redux 结合使用,但决定反对。

尽管有轻微的性能优势,但对于某些用例,使用 Map 主要是因为编译器更清楚会发生什么。您还可以免费获得一个尺码道具 :)

我认为有更多理由反对这种方法:

首先,redux 不喜欢不可序列化的对象 - 常见问题解答。如果你想使用 SSR 或将数据保存在 localStorage 中,它将不起作用。

您无法享受 redux 工具包中的许多功能,因为它们假定/创建简单的对象数据结构。例如 createEntityAdapter—— 我个人认为它很棒

您可以在每个 reducer 中创建一个新映射,但它可能会很快变得烦人,而且我不确定性能。

不过 React 并不关心那么多 :)

原文由 Alissa 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题