Redux:如果每个状态变化都是一个新对象,表演怎么样?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redux:如果每个状态变化都是一个新对象,表演怎么样?相关的知识,希望对你有一定的参考价值。

在Redux文档中,在chapter about Reducers中,声明如下:

我们不会改变国家。我们使用Object.assign()创建一个副本。 Object.assign(state,{visibilityFilter:action.filter})也是错误的:它会改变第一个参数。您必须提供一个空对象作为第一个参数。您还可以启用对象扩展运算符提议来编写{... state,... newState}。

我的问题是:这个新的State对象的创建是否会对性能和内存消耗产生影响?

如果我每次创建一个新对象,那么我在内存中有许多State对象,从长远来看这应该占用大量内存。

这是如何处理的?我对性能问题和内存消耗缺少什么?

答案

好吧,总之......不是真的。

如果您的状态对象是唯一一个引用该对象的状态对象,那么当您将该对象替换为另一个对象时,旧对象将被清除。在javascript中查看有关内存和垃圾回收的链接:

https://codeburst.io/javascript-memory-management-and-garbage-collection-in-javascript-ebe7a97d7143

您可能认为您的组件存储了对状态的引用(它不应该),但通常这些只是对传递给render方法的状态部分的临时引用。

以上是关于Redux:如果每个状态变化都是一个新对象,表演怎么样?的主要内容,如果未能解决你的问题,请参考以下文章

没有 Redux 的快速变化的状态

Reducer 状态没有被新对象更新 [redux, redux-toolkit, normalize]

在 Redux 状态下更新单个值

理解Javascript的状态容器Redux

理解Javascript的状态容器Redux

试图在 React DOM 上为 CurrentUser 反映来自 CurrentUser 的 Redux 状态变化?