gpt4 book ai didi

reactjs - 如何清理 Redux 的状态?

转载 作者:行者123 更新时间:2023-12-03 13:22:26 30 4
gpt4 key购买 nike

作为 Redux 初学者,考虑到一个更大的应用程序(的想法),我想象一个类似于以下的根 reducer :

const rootReducer = combineReducers({ accounting, crm, sales })

在这种情况下,即使用户仅使用应用程序的一部分,应用程序状态也将包含会计、crm 和销售。这可能是有利的,例如在会计和 CRM 之间来回切换时作为缓存,但您可能不希望保留曾经打开过的所有 View 的所有数据,即没有任何修剪的完整可能状态树,永远在应用程序内,甚至在加载时将整个树初始化为其初始状态。

有解决这个问题的习语、模式或库吗?还是我遗漏了什么?

作为解决保留所有数据的部分解决方案,我想像在离开应用程序的某些部分时将部分状态重置为其初始状态,给出一些声明性规则,例如:

  • 设置accounting = {} (间接地,通过诸如 ACCOUNTING_LEAVING 之类的操作)当 <Accounting/> 时收到componentWillUnmount
  • 删除/设置crm.mail = {}<MailEditor/>收到componentWillUnmount

我还没有看到以任何方式清理状态的例子。许多“列表+详细 View ”示例存储状态,例如 { list: [...], detail: {...} } ,但是当切换到详细 View 时,列表既不会被清空,也不会被清空,也不会被删除。当我可能稍后返回到 ListView 时,这很好,但当我朝九晚五使用应用程序而不释放数据时,这就不好了。

最佳答案

一些相关的想法:

  • 除非您预计商店中会缓存数十或数百兆字节的数据,否则您可能担心这个问题为时过早。编写您的应用,进行基准测试,然后进行优化。
  • 派出行动清理商店的部分区域是完全有效且合理的。
  • 我的Redux addons ecosystem catalog可能列出了一些有用的库。特别是Component StateReducer页面指​​向一些库,这些库可以执行诸如从存储中动态添加和删除 reducer 以及重置状态等操作。
  • 您可能也对我的优质收藏React and Redux tutorials感兴趣.

总的来说,如何组织状态、何时更新状态以及更新内容取决于您。 Redux 只是为更新过程提供了一种模式和规则。

关于reactjs - 如何清理 Redux 的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36845080/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com