Должен ли я получить доступ к магазину, чтобы использовать значение состояния в качестве полезной нагрузки для эффекта NGRX? - PullRequest
0 голосов
/ 05 февраля 2019

Мой эффект должен загрузить фильтры.В первый раз он должен использовать apiService для загрузки возможных жанров, но во второй раз (если есть значения в хранилище для жанров) он должен загрузить их из хранилища.Кроме того, если у меня уже есть значение для releaseDateGte в магазине, оно должно использовать его вместо пустой передачи.

@Effect()
    genresLoad$: Observable<Action> = this.actions$.pipe(
      ofType<LoadFilters>(FilterActionTypes.LoadFilters),
      exhaustMap(() =>
        this.apiService.getGenres()
          .pipe(
            map(genres => new LoadFiltersSuccess({genres: genres, releaseDateGte: ''})),
            catchError(error => of(new LoadFiltersFail(error)))
          ))
    );

1 Ответ

0 голосов
/ 05 февраля 2019

Ваш компонент должен быть ограничен для вашего магазина.Таким образом, каждый раз, когда он обновляется, он будет отражаться на вашем пользовательском интерфейсе.

Примерно так:

this.filters =  this._store.select(getFilterSelector)
      .pipe(
        takeUntil(this._ngOnDestroy),
        filter((filter) => !!filter)
        )

После первой отправки представление будет синхронизировано.Нет никаких причин обращаться к хранилищу из эффектов и делать логику, которую для вас обрабатывают NGRX.

Если вы пытаетесь избежать запуска эффекта , проверьте состояние перед отправкой LoadFilters действие.

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