您应该在每个减速器中都有一个明确的动作,它将清理商店中的各个属性.在您拨打电话时,手动调度每个减速器中的清除操作logout.我现在不确定它是否可以一次性清理整个商店.
替代方案:采用更清洁,更快捷的方法.无论何时通过store.dispatch它调用一个动作,都可以调用所有减速器action.type.假设您的操作类型名称是CLEAR,将此操作放在每个reducer中以清除商店的相应属性.并store.dispatch使用action.type = 'CLEAR'ONCE 调用,它将清除商店的所有属性.
如果它让我感到困惑,我将尝试用代码解释.
解决方法是编写根减速器。
与此类似:
export function reducer(state: any, action: any): ActionReducer<any> {
if (action.type === 'CLEAR STATE') {
state = undefined;
}
return appReducer(state, action);
}
Run Code Online (Sandbox Code Playgroud)
请检查以下内容:如何重置Redux存储的状态?
我猜测执行此操作的方法是使用一个在其上注册了商店的组件。将其放入路由器出口或结构指令中,当值发生变化时,可以强制对组件进行销毁和初始化。
由于商店已注册为组件的提供者(除非我弄错了)并且应该与其绑定,因此当组件被销毁并使用新组件创建新组件时,它应该被销毁。只是一个想法。我还没有时间测试它。
但不要在父组件中注册提供程序。我相信注射剂是通过层次结构发挥作用的。
| 归档时间: |
|
| 查看次数: |
4736 次 |
| 最近记录: |