你如何清理Redux的状态?

时间:2016-04-25 15:37:24

标签: reactjs state redux reducers

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

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

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

是否有解决此问题的习语,模式或图书馆,或者我遗失了什么?

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

  • accounting = {}收到ACCOUNTING_LEAVING
  • 时设置<Accounting/>(间接通过componentWillUnmount等操作)
  • crm.mail = {}收到<MailEditor/>
  • 时删除/设置componentWillUnmount

我没有看到以任何方式清理国家的例子。许多“list + detail view”示例存储类似{ list: [...], detail: {...} }的状态,但是当切换到详细视图时,列表既不会被清空,也不会被清空或删除。我很快就会回到列表视图,但是在没有发布数据的情况下使用应用程序9到5时就不行了。

1 个答案:

答案 0 :(得分:4)

一些相关的想法:

  • 除非您期望在商店中缓存数十或数百兆的数据,否则您可能会过早担心这一点。编写您的应用程序,基准测试,然后进行优化。
  • 清除部分商店的调度操作完全有效且合理。
  • 我的Redux addons ecosystem catalog可能会列出一些有用的库。特别是,Component StateReducer页面指向某些库,这些库可以执行操作,例如从商店中动态添加和删除Reducer,以及重置状态。
  • 您可能也对我的高品质React and Redux tutorials收藏品感兴趣。

总体而言,您如何组织州,更新时以及更新内容取决于您自己。 Redux只是为进行更新的过程提供了模式和规则。