Angular/ngrx 应用程序在单击注销时中断

Angular/ngrx application breaks on logout click

我已经尝试解决了4-5天,但仍然找不到问题的原因。

如标题所述,每次我单击注销按钮时,应用程序浏览器都会冻结,无法关闭选项卡,为了再次 运行 该应用程序,我必须打开另一个应用程序或通过任务管理器关闭浏览器.

我认为问题出在 ngrx/effect,我用它来清除 localstorage

这是它:

@Effect() logout$: Observable<Action> = this.actions$
        .ofType(fromActions.LOGOUT)
        .pipe(
            tap((action: fromActions.Logout) => {
                return this.authService.logout();
            }))

方法如下:

logout() {
    localStorage.clear();
  }

而且令牌还在,动作没有发送,我检查了动作,没有类型错误..

这是两张照片,点击注销之前和之后:

编辑: 行动调度:

onLogout() {
    this.store.dispatch(new fromActions.Logout());
  }

减速器:

case AuthActions.LOGOUT: {
            return {
                ...state,
                loading: false,
                loggedIn: false
            }

在您的效果中,您正在 return执行注销操作,无限循环。

尝试创建一个 LogoutSuccess 操作,并在注销成功时return创建它。

... .pipe(
tap((action: fromActions.Logout) => {
  return this.authService.logout();
}),
map(() => { return {type: 'NO_ACTION'}; })