ngrx url 作为过滤功能中的单一事实来源

kit*_*kit 5 ngrx ngrx-effects angular

我正在开发一个功能,您可以通过不同的标准过滤实体。选定的标准反映在 UI 过滤器和芯片中。这个想法是将过滤器存储在 URL 中。

申请流程如下:

  => queryParams are parsed and mapped to filters
  => filters are stored in store 
    => chips are calculated based on filters
    => api call is triggered to fetch data
Run Code Online (Sandbox Code Playgroud)

当 UI 事件发生时,ngrx/effect 会处理它,例如。我们想通过单击芯片来删除过滤器。Effect 方法获取单击的芯片和当前状态,然后从中计算 queryParams 并使用新的 queryParams 触发导航。效果管的最后一个元素如下所示:

const filters = selectFilters(storeState);
filter.removeValue(value);
return this.router.navigate(['some route'], {
  queryParams: filters.toQueryParams()
});
Run Code Online (Sandbox Code Playgroud)

看起来我的作用是进行某种状态管理,这让我感到惊讶。

我将非常感谢这种方法的验证。