将 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.assign
和spread operator
都是浅层操作。因此,您需要对嵌套操作做更多的修改。
您可以查看两者的表现here
我不熟悉 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.assign
和spread operator
都是浅层操作。因此,您需要对嵌套操作做更多的修改。
您可以查看两者的表现here