你如何清理 Redux 的状态?

How do you clean up Redux' state?

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

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

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

是否有解决此问题的成语、模式或库,或者我是否遗漏了什么?

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

我还没有看到以任何方式清理状态的示例。许多 "list + detail view" 示例像 { list: [...], detail: {...} } 一样存储状态,但是当切换到详细视图时,列表既没有被清空,也没有被清空,也没有被删除。当我可能 return 片刻后进入列表视图时,这很好,但当我朝九晚五地使用应用程序而从未发布数据时,情况就不是这样了。

一些相关的想法:

  • 除非您期望在您的商店中缓存数十或数百兆字节的数据,否则您担心这个问题可能为时过早。编写您的应用、进行基准测试,然后进行优化。
  • 清理部分商店的调度行动是完全有效和合理的。
  • 我的 Redux addons ecosystem catalog may have some libraries listed that would be useful. In particular, the Component State and Reducer 页面指向一些库,这些库执行动态添加和从您的商店中删除 reducer 以及重置状态等操作。
  • 您可能也对我的 collection 的 high-quality React and Redux tutorials 感兴趣。

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