5

我正在使用 Ngrx 和 Angular2 构建一个移动应用程序。当用户从我的应用程序中注销时,我想清除商店?谁能知道该怎么做?

4

3 回答 3

7

您应该在每个 reducer 中有一个明确的操作,这将清理商店中的相应属性。当您调用logout. 我现在不确定是否可以一次清理整个商店。

替代方案:更清洁和更快的方法是。每当你通过store.dispatch它调用一个动作时,你所有的减速器都用 that 调用action.type。假设您的动作类型名称是CLEAR,将此动作放在每个减速器中以清除商店的相应属性。并store.dispatchaction.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 回答