作为一个Redux的初学者,考虑到(一个相对较大的)应用程序的想法,我想象一个类似于以下代码的根reducer:
作为 Redux 初学者,考虑到(相对较大的)应用程序的情况,我会设想一个类似如下的根 reducer:
const rootReducer = combineReducers({ accounting, crm, sales })
即使用户只使用应用程序的一部分,该情况下应用程序状态仍将包含会计、客户关系管理和销售等内容。这可能是有利的,例如在会计和客户关系管理之间来回切换时用作缓存,但您可能不希望保留曾经打开过的所有视图的所有数据,也就是完整的可能状态树没有进行任何修剪,在应用程序中永久保存,甚至在加载时将整个树初始化为其初始状态。
是否存在解决此问题的成语、模式或库,还是我遗漏了什么?
作为部分解决方案,我想象可以重置某些部分的状态到其初始状态,当从应用程序的某些部分导航离开时给出一些声明性规则,例如:
- 当
<Accounting/>
接收到componentWillUnmount
时,通过类似于ACCOUNTING_LEAVING
的操作间接设置accounting = {}
- 当
<MailEditor/>
接收到componentWillUnmount
时,删除/设置crm.mail = {}
我还没有看到任何清理状态的示例。许多“列表 + 详细视图”示例存储状态,例如 { list: [...], detail: {...} }
,但当切换到详细视图时,列表既不被清空、也不为空值、也不被删除。这很好,当我可能在几分钟后返回到列表视图时,但是如果使用一个9到5的应用程序而没有释放数据,则不行。