【问题标题】:Best approach for automatically increasing data in React/Redux?在 React/Redux 中自动增加数据的最佳方法?
【发布时间】:2016-12-06 22:45:32
【问题描述】:

假设我有一个 UI 元素,我希望它绑定到 redux 商店中的一个状态。当这种状态更改由用户操作触发时,这是一个很好的方法。但是,如果这是一个不断变化的状态呢?例如,如果一个元素需要显示页面打开了多长时间。如果页面每 100 毫秒调度一次操作,那么它将导致巨大的内存泄漏,因为每 100 毫秒必须创建和存储一个新的状态对象,并且永远不会被垃圾回收。

我目前只是使用好的旧 jQuery 来更新它,但我认为如果这个数据绑定可以集成到大的 react/redux 流程中会很好。欢迎任何建议。谢谢。

【问题讨论】:

  • Redux 仅在使用 Redux DevTools 时将旧状态存储在内存中,并且默认限制了存储旧状态的数量。在生产环境中,不存储旧状态,所有内容都将被垃圾回收。见redux.js.org/docs/faq/Performance.html#performance-state-memory
  • @markerikson 谢谢,很高兴知道,我以前不知道。所以我假设您建议解决此问题的最佳方法是将 UI 元素绑定到状态而不担心内存?
  • 啊...基本上,是的,不用担心内存方面。另外,我实际上建议你在使用 React 和 Redux 时不要考虑“绑定”这个词。
  • @markerikson 谢谢。你能详细说明“绑定”这个词有什么问题吗?此外,如果树很大,每隔很短的时间就必须复制状态树怎么办,在我看来,这会使浏览器在 GC 上花费大量 cpu 时间。

标签: javascript reactjs redux


【解决方案1】:

我会尝试回答我自己的问题。 查看thisthisthis 会很有帮助。

在这种情况下,imo 最好的方法是绕过 redux 存储并使用新的道具渲染新的 UI 元素。这样只会复制与 UI 元素显示相关的道具,而不是完整的状态树。

渲染新的 UI 元素不会移除旧的 UI 元素,因为这是 react 擅长的:比较差异,只更新需要更新的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多