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

When should I be using icepick.merge over lodash.merge

本文关键字:merge lodash icepick 什么时候      更新时间:2023-09-26

我最近发现需要在我的化简器内部进行深入的合并。

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

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

在使用反应化简器(和不变性)时,什么时候应该使用冰锥而不是 lodash?在数组和对象上调用 object.freeze 是很好的做法吗?

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

洛达什

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

冰锥

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

不可变.js

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