Использование Ngrx Effects Перехватывает жизненный цикл OnInitEffects (кажется, излучается бесконечно) - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь немного узнать о хуках жизненного цикла эффектов, представленных в Ngrx 7, и я не совсем понимаю, что происходит.У меня есть приложение Angular, и у меня есть следующее в классе эффектов, однако init $ observable излучает значения бесконечно.Я ожидал, что это выстрелит однажды и завершится.Я также немного новичок в наблюдаемых.Документация мне не очень помогает, так как примеров не так много.Я мог бы добавить дубль (1), но я хотел бы понять, почему он продолжает излучать вечно.

@Injectable()
export class AuthEffects implements OnInitEffects{

  constructor(private actions$: Actions) {}

  @Effect({dispatch: false})
  login$ = this.actions$.pipe(
    ofType<LoginAction>(AuthActionTypes.LoginAction),
    tap(console.log)
  );

  @Effect({dispatch: false})
  logout$ = this.actions$.pipe(
    ofType<LogoutAction>(AuthActionTypes.LogoutAction),
    tap(console.log)
  );

  @Effect()
  init$ = this.actions$.pipe(
    ofType<Action>('[Auth] Effects Init'),
    tap(console.log)
  );

  ngrxOnInitEffects(): Action {
    console.log('AuthEffects init\'d');
    return { type: '[Auth] Effects Init'};
  }
}

1 Ответ

0 голосов
/ 24 апреля 2019

Это ожидаемое поведение - основное использование эффектов заключается в воздействии на сторонние побочные эффекты.И вы устанавливаете ofType<Action> так, что он излучает всякий раз, когда происходит любое действие , в то время как например:

  @Effect({dispatch: false})
  login$ = this.actions$.pipe(
    ofType<LoginAction>(AuthActionTypes.LoginAction),
    tap(console.log)
  );

излучается всякий раз, когда происходит LoginAction .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...