最近,我发现有必要在 reducer 内部进行深度合并。

我发现icepick.mergelodash.merge都能胜任。

似乎icepick.merge是递归合并和调用object.freeze的有效方法。

当使用 react 减少器(和不变性)时,什么时候应该使用icepick代替lodash?在数组和对象上调用object.freeze是一种好习惯吗?

最佳答案

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

Lodash

lodash为您提供了处理数据结构的工具,该工具不会改变数据结构,但不会对数据结构本身实现不可变性。例如,使用lodash时,没有什么可以阻止您或任何其他开发人员更改状态。

冰镐

icepick似乎可以让您保留现有的数据结构,但可以卡住它们,从而可以检查chrome中的数据结构并使其表现正常。我没有在项目中使用过icepick,但我注意到有些人喜欢它,因为它具有轻量级的特性,而且您保留了现有的数据结构,因此可以在开发工具中对其进行检查等。

Immutable.js

解决此问题的首选方法是使用ImmutableJS,该库提供的数据结构消除了卡住/解冻的麻烦,并在整个项目中始终如一地实现了不变性。不可变提供的数据结构具有内置的API,该API与常规的javascript数据结构相似,并增加了一些强大的工具(例如lodash),例如深度合并。

关于javascript - 我什么时候应该在lodash.merge上使用icepick.merge,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36007046/

10-13 00:40