到目前为止,我看到的大多数“入门样板”和一些关于 React / Redux 的帖子都鼓励使用不可变.js https://facebook.github.io/immutable-js/来解决可变性。我个人依靠Object.assign
或传播运算符来处理这个问题,因此并没有真正看到 immutable.js 的优势,因为它增加了额外的学习,并且与用于可变性的普通 js 技术有所不同。我试图找到转换的正当理由,但无法找到,因此我在这里询问它为什么如此受欢迎。
这一切都与效率有关。
持久数据结构
持久数据结构在发生变异时会始终生成新的数据结构,从而保留其自身的先前版本。为了避免昂贵的克隆,仅存储与先前数据结构的差异,而在它们之间共享交集。这种策略称为结构共享。因此,持久数据结构比克隆更有效Object.assign
或扩展运算符。
Javascript 中持久数据结构的缺点
不幸的是,Javascript 本身并不支持持久数据结构。这就是 immutable.js 存在的原因,它的对象与普通的旧 Javascript 有很大不同Object
s。这会导致更冗长的代码以及大量持久数据结构到本机 Javascript 数据结构的转换。
关键问题
immutable.js 结构共享(效率)的优点何时超过其缺点(冗长、转换)?
我想这个库只有在具有大量和广泛的对象和集合的大型项目中才会有回报,当整个数据结构的克隆和垃圾收集变得更加昂贵时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)