我什么时候应该使用icepick.merge而不是lodash.merge

时间:2016-03-15 09:20:10

标签: javascript reactjs immutability lodash

我最近发现需要在我的Reducer中深入融合。

我发现icepick.mergelodash.merge都可以完成这项工作。

似乎icepick.merge是一种有效的方式,可以递归地合并和调用object.freeze

当使用反应还原剂(和不变性)时,你应该何时使用icepick而不是lodash?在数组和对象上调用object.freeze是一种好习惯吗?

1 个答案:

答案 0 :(得分:1)

这是一个强制执行不变性的问题,以及您想要的控制/抽象级别。

lodash

lodash为您提供了以不会改变数据结构的方式处理数据结构的工具,但它并没有强制数据结构本身的不变性。例如,当使用lodash时,没有什么能阻止你或任何其他开发者改变状态。

冰锥

icepick似乎让你保留现有的数据结构但冻结它们,允许你检查chrome中的数据结构并让它们像往常一样运行。我没有在项目中使用过icepick,但我注意到有些人更喜欢它,因为它具有轻量级特性,而且你保留了现有的数据结构,允许在开发工具等中进行检查。

Immutable.js

我解决此问题的首选方法是使用ImmutableJS使用此库提供的数据结构消除了冻结/解冻的苦差事,并在整个项目中始终如一地强制实现不变性。不可变提供的数据结构内置了API,类似于常规javascript数据结构,并添加了一些来自lodash的电源工具,如深度合并。