【问题标题】:Error: Effect dispatched an invalid action: undefined错误:Effect 调度了一个无效的动作:未定义
【发布时间】:2019-05-24 05:00:14
【问题描述】:

我正在尝试为我的动作编写一个效果。里面有getData()checkToken()两种服务方式。

会报错:

“错误错误:效果“IndexEffects.loginStatusValidate$”调度了无效操作:未定义”

我该怎么办?

 @Effect()
  loginStatusValidate$: Observable<Action> = this.actions$.pipe(
    ofType(IndexActionTypes.LoginStatusValidate),
    switchMap(() =>
      this.authService.getData().pipe(
        map(oldToken => {
          if (oldToken) {
            console.log("oldToken exsits");
            this.authService.checkToken().subscribe((newToken) => {
              console.log(newToken);
              // Throw error if I try to dispatch action here
              return new LoginStatusValidateSuccess(newToken);
            });
             // It's fine if I just dispatch action here
             //return new LoginStatusValidateSuccess('');

          } else {
            return new LoginStatusValidateError();
          }
        })
      )
    )
  );

 getData() {
    return of(localStorage.getItem('ACCESS_TOKEN'));
  }
 checkToken(){
      // access api refresh token 
      return of("newToken");

  }

【问题讨论】:

    标签: javascript angular typescript ngrx ngrx-effects


    【解决方案1】:

    问题是this.authService.checkToken().subscribe((newToken) =&gt; {,这样做你并没有返回任何东西,而是返回了undefined

    你订阅了,但你必须返回一个动作流,就像你对this.authService.getData().pipe所做的那样。

    【讨论】:

    • 谢谢,但我第一次这样做,仍然抛出同样的错误。所以我改为订阅,没有任何改变。
    • 确保您正在返回一个操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2021-06-28
    • 2019-12-26
    • 1970-01-01
    • 2018-11-10
    • 2020-12-28
    相关资源
    最近更新 更多