我有一个使用ngrx的SPA Web应用程序。 (我继承了这一点,如果我自己实现的话,也许我不会使用ngrx)。有人可以告诉我“延迟数据加载”的概念是否适用于ngrx?
例如,某些组件偶尔需要某种资源。通常,我会提供从外部API检索此资源的服务。在内部,在第一个请求上,服务将返回一个可观察值,该值将从查询的数据+缓存中填充,因此将来的访问将返回一个已经具有该值的可观察值。
现在,使用NgRX,我看不到在访问级别进行干预的方法,因为从状态检索数据时没有发生“逻辑”。
当然,我可以预先查询资源,但是从软件设计的角度来看,我不想关心查询何时“发生”,我只想知道它在需要时发生。
答案 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}] => {
...
})
)