我正在使用 Ngrx 和 Angular2 构建一个移动应用程序。当用户从我的应用程序中注销时,我想清除商店?谁能知道该怎么做?
问问题
10800 次
3 回答
7
您应该在每个 reducer 中有一个明确的操作,这将清理商店中的相应属性。当您调用logout
. 我现在不确定是否可以一次清理整个商店。
替代方案:更清洁和更快的方法是。每当你通过store.dispatch
它调用一个动作时,你所有的减速器都用 that 调用action.type
。假设您的动作类型名称是CLEAR
,将此动作放在每个减速器中以清除商店的相应属性。并store.dispatch
用action.type = 'CLEAR'
ONCE调用,它会清除商店的所有属性。
如果让我感到困惑,请告诉我,我将尝试用代码进行解释。
于 2016-08-26T06:49:09.947 回答
5
解决方案是编写根减速器。
它类似于:
export function reducer(state: any, action: any): ActionReducer<any> {
if (action.type === 'CLEAR STATE') {
state = undefined;
}
return appReducer(state, action);
}
检查这个:如何重置 Redux 存储的状态?
于 2016-12-27T23:27:59.527 回答
0
我对一种方法的猜测是拥有一个在其上注册了商店的组件。将它放在路由器出口或结构指令中,当值更改时,可能会在组件上强制销毁和初始化。
由于商店被注册为组件的提供者(除非我弄错了)并且应该绑定到它,所以它应该在组件被销毁并使用新组件创建新组件时被销毁。只是一个想法。我没有时间测试它。
但是不要在父组件中注册提供者。我相信注射剂是通过层次结构工作的。
于 2016-08-06T15:30:21.400 回答