我正在使用Ngrx和Angular2构建移动应用程序。当用户从我的应用程序注销时,我想清除存储吗?有谁知道怎么做?
答案 0 :(得分:7)
您应该在每个减速器中都有一个明确的动作,这将清除商店中的各个属性。当您致电<div class="wrapper">
<div class="articlePreview">
<div class="imgPreview">
<img class="img" src="http://lorempixel.com/500/200"/>
</div>
<a href="#">I'm a link</a>
</div>
<div class="articlePreview">
<div class="imgPreview">
<img class="img" src="http://lorempixel.com/200/500"/>
</div>
<a href="#">I'm a link</a>
</div>
<div class="articlePreview">
<div class="imgPreview">
<img class="img" src="http://lorempixel.com/100/100"/>
</div>
<a href="#">I'm a link</a>
</div>
</div>
时,手动调度每个减速器中的清除操作。我现在不确定它是否可以一次性清理整个商店。
<强>替代强>:
一种更清洁,更快捷的方法。每当您通过logout
致电某个操作时,它会使用store.dispatch
调用所有缩减器。假设您的操作类型名称为action.type
,请将此操作放在每个reducer中以清除商店的相应属性。并使用CLEAR
ONCE调用store.dispatch
,它将清除商店的所有属性。
如果它让我感到困惑,我会尝试用代码解释。
答案 1 :(得分:3)
解决方案是编写root reducer。
它与此类似:
export function reducer(state: any, action: any): ActionReducer<any> {
if (action.type === 'CLEAR STATE') {
state = undefined;
}
return appReducer(state, action);
}
答案 2 :(得分:-1)
我猜这样做的方法是让一个组件在其上注册商店。将它放在路由器插座或结构指令中,当值发生变化时,它可能会强制销毁组件并初始化。
由于商店被注册为组件的提供者(除非我误认为)并且应该绑定到它,因此应该在销毁组件时销毁它,并使用新组件创建新组件。只是一个想法。我没有时间去测试它。
但是,不要在父组件中注册提供程序。我相信注射剂可以通过层次结构进行工作。