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

标签 javascript reactjs immutability lodash

我最近发现需要在我的 reducer 中进行深入合并。

我发现 icepick.mergelodash.merge做这份工作。

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

在使用 React reducer(和不可变性)时,什么时候应该使用 icepick 而不是 lodash?在数组和对象上调用 object.freeze 是一种好习惯吗?

最佳答案

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

lodash

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

冰锥

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

不可变的.js

我首选的解决方法是使用 ImmutableJS使用该库提供的数据结构可以消除卡住/解冻的繁琐工作,并在整个项目中始终如一地实现不变性。 immutable 提供的数据结构内置了类似于常规 javascript 数据结构的 API,并添加了一些来自 lodash 的强大工具,如深度合并。

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

相关文章:

reactjs - 通过相对高度和宽度在 ReactJS 中的图像上添加文本

reactjs - 如何在 React 中自由使用 pojo,具有 setter,作为状态

javascript - 记住哪个元素具有使用 removeClass() 删除的类

javascript - 为什么事件 instanceof TouchEvent 在 Firefox 中抛出异常

html - 如何创建带有固定页脚的 flexbox 设计卡片

java - 为什么不可变类提供修改器?

java - 尝试从一个非常简单的映射中获取不可变的 Collection View (浅拷贝就足够了)

javascript - JPlayer - IE 中的媒体错误

javascript - 使用CodeIgniter获取#sign in URL后面的字符串

javascript - 如何在不改变任何内容的情况下找到数组中最常出现的项目?