将 immutable.js 与 react redux 一起使用时,是否允许使用 reducer return 记录实例而不是对象?

When using immutable.js with react redux is it permissible to have reducer return a record instance instead of an object?

我不熟悉 React redux 以及 immutable.js 库的使用。我想知道让我的 reducer return 成为一个 Record 的实例而不是一个简单的对象是不是一个坏主意。这样做的想法是让我可以使用方便的方法,例如合并,而不是必须编写类似的东西。

return Object.assign({}, state, updatedState)

是否有令人信服的理由说明为什么不应该这样做?

return 记录实例是个不错的主意,因为 Immutable.js 会为您处理。你的整个 redux 树 将是不可变的,因此它只会被它的一组操作改变。

如前所述here

Data encapsulated in an Immutable.JS object is never mutated. A new copy is always returned.

工作流程

Immutable.js 使数据 Persistant, therefore previous copies of the data is available and shares data via hash maps tries and vector 尝试 .

因此不需要涉及昂贵的操作,例如克隆数据。

缓存 复制数据的需求被最小化,这导致 更快 克隆 操作。如果值没有变化,它可以避免创建新对象

另外需要注意的是Object.assignspread operator都是浅层操作。因此,您需要对嵌套操作做更多的修改。

您可以查看两者的表现here