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

Tom*_*Tom 6 javascript immutability lodash reactjs

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

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

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

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

Jeg*_*ger 1

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

洛达什

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

冰镐

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

不可变.js

我解决这个问题的首选方法是使用ImmutableJS,使用该库提供的数据结构消除了冻结/解冻的繁琐工作,并在整个项目中一致地强制执行不变性。immutable 提供的数据结构内置了 API,与常规 javascript 数据结构类似,并添加了一些来自 lodash 的强大工具,例如深度合并。