我是新手反应redux以及使用immutable.js库。我想知道是否一个坏主意让我的reducer返回一个Record实例而不是一个简单的对象。这样做的想法是允许我使用方便的方法,如合并,而不是必须写类似的东西。
return Object.assign({}, state, updatedState)
有没有令人信服的理由为什么不应该这样做?
返回记录实例并不是一个坏主意,因为Immutable.js
将为您处理。您的整个redux树将是不可变的,因此它只会被其操作集更改。
正如提到的here
封装在Immutable.JS对象中的数据永远不会发生变异。始终返回新副本。
Immutable.js
生成数据Persistant,因此以前的数据副本可用并通过hash maps尝试和vector尝试共享数据。
因此,不需要涉及昂贵的操作,例如克隆数据。
需要从缓存中复制数据最小化,这导致它比克隆操作更快。如果值没有变化,它可以避免创建新对象。
另外需要注意的是Object.assign
和spread operator
都是浅层操作。因此,您需要对嵌套操作进行更多修改。
你可以检查两个here的性能