nau*_*uti 8 memory-leaks reactjs redux react-redux
我有一个仪表板应用程序,其中有几个图表在设定的时间间隔内更新.我的第一个想法是更新商店中的数据,然后让所有图表从那里开始.
但这会导致内存泄漏吗?由于Redux每次数据更改时都会创建一个新存储,并保留旧存储.每秒~2mb的数据是否会堆积并使应用程序崩溃?
我看到的另一种方法是将数据保持在本地状态(使用setState).我希望一些更有经验的React/Redux开发人员可以就此提出建议.谢谢!
nik*_*ohn 11
丹阿布拉莫夫,终极版的创作者针对这一问题在这里,像这样:
请注意,有时人们会对Redux感到困惑,并假设在每个操作中都必须深入克隆状态树.绝对不是这样.只有更改的部分需要更改其引用.例如,如果某个操作导致更改数组中的一个项,实际上,该项和数组将需要复制,但是,数组中的所有其他元素都将保留其标识.因为大多数时候操作都是非常有针对性的并影响一些状态键,并且因为Redux鼓励规范化数据以使数据结构没有深度嵌套,所以对于典型的Web应用程序而言,这远不像人们想象的那么严重.
我认为这是答案的核心.
“因为 Redux 每次数据收费时都会创建一个新存储并保留旧存储。”
Vanilla Redux 不会这样做,否则每个Redux 商店都会泄漏。事实上,应用程序的其余部分持有对状态的引用将阻止它被清理。
例如类似的东西
window.states = []
store.subscribe(() => {
window.states.push(store.getState())
})
Run Code Online (Sandbox Code Playgroud)
会造成无界的内存增长。
此外,一些 Redux 开发工具确实会泄漏以提供时间旅行功能,因此请确保在您的生产版本中关闭它们。
| 归档时间: |
|
| 查看次数: |
10236 次 |
| 最近记录: |