我最近发现需要在我的Reducer中深入融合。
我发现icepick.merge和lodash.merge都可以完成这项工作。
似乎icepick.merge是一种有效的方式,可以递归地合并和调用object.freeze。
当使用反应还原剂(和不变性)时,你应该何时使用icepick而不是lodash?在数组和对象上调用object.freeze是一种好习惯吗?
答案 0 :(得分:1)
这是一个强制执行不变性的问题,以及您想要的控制/抽象级别。
lodash为您提供了以不会改变数据结构的方式处理数据结构的工具,但它并没有强制数据结构本身的不变性。例如,当使用lodash时,没有什么能阻止你或任何其他开发者改变状态。
我解决此问题的首选方法是使用ImmutableJS使用此库提供的数据结构消除了冻结/解冻的苦差事,并在整个项目中始终如一地强制实现不变性。不可变提供的数据结构内置了API,类似于常规javascript数据结构,并添加了一些来自lodash的电源工具,如深度合并。