【发布时间】:2019-05-16 17:36:30
【问题描述】:
我正在考虑使用 ES6 Map 对象为我做哈希,而不是创建自定义哈希函数。但是,在我看来,它对不变性的支持并不多,这对于 React 和 Redux 来说都是一个关键。
我习惯于不使用任何库来实现不变性,而只使用简单的解构:
const newObj = { ...prevObj, newKey: "value" }
或使用数组映射/过滤。
但是,ES6 Map 具有直接更新对象本身的方法。
我能想到的是做这样的事情:
var myMap = new Map()
Var myNewMap = { ...myMap.set() }
this.setState({ myMap:myNewMap })
但我不确定这是否可行。
【问题讨论】:
-
我会避免在 redux 商店中使用 Map。 github.com/reduxjs/redux/issues/1499
-
好的,但是我将如何获得与 0(1) 查找相同的好处?
-
有兴趣知道您在做什么,其中地图在对象上的查找速度会有所不同,值得担心。您是否一次查找数十万个值?
-
嗯,这个问题的答案有两个方面。我处于一个必须编写一个 Web 应用程序的位置,该应用程序将由位于与 VM 的 RDP 连接上的用户使用,这极大地降低了客户端的处理能力,并且 javascript 的运行速度比以往任何时候都慢。因此,如果我可以节省任何时间来查找 redux,我将获得很多。其次,我可能或现在有大约 80-120.000 行需要搜索的客户记录的缓存数据,因此我认为缩短搜索时间而不是进行数据库查找可能会有所帮助。
-
我想唯一的问题是,你真的遇到过使用普通对象的问题吗?如果不是,那么这可能是一个过早的优化。如果是这样,那么您可能想要查看一些 redux 的替代方案,即使只是针对有问题的数据。似乎在 Redux 中使 Maps 工作的复杂性不值得付出努力,甚至可能抵消 Maps 的好处,例如创建新 Maps 比创建对象慢得多。在投入大量工作之前,绝对值得进行一些实际测量。
标签: javascript reactjs dictionary redux react-redux