小编典典

使用immutable.js优于Object.assign或spread运算符

reactjs

到目前为止,大多数“入门示例”和一些有关react /
redux的帖子都鼓励使用immutable.js来解决可变性。我个人依靠Object.assign或分散运算符来处理此问题,因此在immutable.js中并没有真正看到优势,因为它增加了额外的学习,并从用于可变性的原始js技术中转移了一些。我试图找到进行切换的正当理由,但未能因此而在这里询问为什么如此流行。


阅读 300

收藏
2020-07-22

共1个答案

小编典典

这全都与效率有关。

持久数据结构

当持久数据结构发生突变时,它总是通过产生新的数据结构来保留其先前的版本。为避免昂贵的克隆,仅存储与先前数据结构的差异,而交集在它们之间共享。这种策略称为结构共享。因此,持久数据结构比使用Object.assign或散布运算符进行克隆要有效得多。

Java持久性数据结构的缺点

不幸的是,JavaScript本身并不支持持久性数据结构。这就是immutable.js存在的原因,并且其对象与普通的Javascript大大不同Object。这将导致更冗长的代码,并且将持久性数据结构转换为原生Javascript数据结构。

关键问题

immutable.js的结构共享(效率)的好处何时超过其缺点(详细程度,转换)?

我猜该库只有在拥有大量对象和集合的大型项目中才能获得回报,而克隆整个数据结构和垃圾回收会变得更加昂贵。

2020-07-22