行动没有被派发生效

问题描述

我在下面有这个效果,当我得到我需要的令牌时它执行得很好。但它并没有启动新的效果 newUserRequested 我是 Ngrx 的新手,正在苦苦思索如何连接 effects

  @Effect({dispatch: false})
  login$ = this.actions$.pipe(
    ofType<Login>(AuthActionTypes.Login),switchMap(action => {
      console.log(action.payload)
      localStorage.setItem(`access_token`,action.payload.accesstoken);
      localStorage.setItem(`refresh_token`,action.payload.refreshToken);
      return of(new UserRequested());
    }),);
  @Effect({dispatch: false})
  loadUser$ = this.actions$
    .pipe(
      ofType<UserRequested>(AuthActionTypes.UserRequested),tap(res => console.log('user requested',res)),withLatestFrom(this.store.pipe(select(isUserLoaded))),filter(([action,_isUserLoaded]) => !_isUserLoaded),mergeMap(([action,_isUserLoaded]) => {
        return this.auth.getUserFromToken()
          .pipe(
            catchError(err => {
              of(new AuthError({error: err}));
              return EMPTY;
            }),switchMap(user => {
              if (user) {
                const jsonConvert: JsonConvert = new JsonConvert();
                const authUser: AuthUser = jsonConvert.deserializeObject(user,AuthUser);
                console.log(authUser)
                return of(new UserLoaded({user: authUser}));
              }
            })
          )
      }));

初始化效果

  @Effect()
  init$: Observable<Action> = defer(() => {

    const aToken = localStorage.getItem('access_token');
    const rToken = localStorage.getItem('refresh_token');

    if (aToken) {
      return of(new Login({accesstoken: aToken,refreshToken: rToken}));
    } else {
      return of({type: 'NO_ACTION'});
    }
  });

我的效果还好吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)