延迟将数据加载到NgRX存储

时间:2020-08-05 12:55:22

标签: angular lazy-loading ngrx ngrx-store

我有一个使用ngrx的SPA Web应用程序。 (我继承了这一点,如果我自己实现的话,也许我不会使用ngrx)。有人可以告诉我“延迟数据加载”的概念是否适用于ngrx?

例如,某些组件偶尔需要某种资源。通常,我会提供从外部API检索此资源的服务。在内部,在第一个请求上,服务将返回一个可观察值,该值将从查询的数据+缓存中填充,因此将来的访问将返回一个已经具有该值的可观察值。

现在,使用NgRX,我看不到在访问级别进行干预的方法,因为从状态检索数据时没有发生“逻辑”。

当然,我可以预先查询资源,但是从软件设计的角度来看,我不想关心查询何时“发生”,我只想知道它在需要时发生。

1 个答案:

答案 0 :(得分:0)

如果需要,服务仍可以缓存该数据?

一种常见的模式是检查效果中是否可用的状态,例如请参见https://timdeschryver.dev/blog/start-using-ngrx-effects-for-this#4-using-a-selector-inside-your-effects

@Effect()
getOrder = this.actions.pipe(
  ofType<GetOrder>(ActionTypes.GetOrder),
  concatMap(action =>
    of(action).pipe(
      withLatestFrom(this.store.pipe(select(getOrders)))
    )
  ),
  // ???
  filter(([{payload}, orders]) => !!orders[payload.orderId])
  mergeMap([{payload}] => {
    ...
  })
)