我是否应该访问商店以将State值用作NGRX效果上的有效载荷?

时间:2019-02-05 18:18:39

标签: angular ngrx

我的效果应加载滤镜。第一次,它应该使用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 :(得分:0)

您的组件应绑定到您的商店。 这样,每次更新时,它都会反映在您的用户界面上。

类似这样的东西:

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

第一次发送后,视图将同步。 没有理由从特效中访问存储并执行NGRX处理程序为您提供的逻辑。

如果您试图避免运行效果,请在分派 LoadFilters 操作之前检查状态。