我一直试图解决这个问题4-5天,但仍无法找到问题的原因。
正如标题所说,每次点击退出按钮应用程序浏览器冻结时,都无法关闭标签,为了再次运行应用程序,我必须打开另一个应用程序或通过任务管理器关闭浏览器。
我认为问题在于ngrx/effect
,我用它来清除localstorage
。
就是这样:
@Effect() logout$: Observable<Action> = this.actions$
.ofType(fromActions.LOGOUT)
.pipe(
tap((action: fromActions.Logout) => {
return this.authService.logout();
}))
&#13;
以下是方法:
logout() {
localStorage.clear();
}
&#13;
并且令牌仍然存在,操作未调度,我检查了操作,没有类型错误..
编辑: 行动派遣:
onLogout() {
this.store.dispatch(new fromActions.Logout());
}
&#13;
减速器:
case AuthActions.LOGOUT: {
return {
...state,
loading: false,
loggedIn: false
}
&#13;
答案 0 :(得分:2)
在你的效果中,你将返回Logout动作,无限循环。
尝试创建LogoutSuccess操作,并在Logout成功时将其返回。
... .pipe(
tap((action: fromActions.Logout) => {
return this.authService.logout();
}),
map(() => { return {type: 'NO_ACTION'}; })