我正在使用ngrx效果从API端点获取数据并添加到状态。有时,用户操作可能会使该数据无效,并且需要从数据库中重新获取。
当前行为- 触发获取数据并添加到状态存储的操作。一个新的XHR请求被记录在网络中获取数据。
- 用户在前端执行操作,需要重新取回。
- NGRX动作
GET_KITS
被调度,动作被记录到DevTools。 没有新的XHR请求。未对商店进行更新。
- 从API获取最新数据的新请求。
getUserKits$ = createEffect(
() =>
this.actions$.pipe(
ofType(UserActions.AccountKitActions.GET_KITS.type),
switchMap(() => this.kitService.getKits()
.pipe(
map(response => UserActions.AccountKitActions.GET_KITS_SUCCESS({kits: response.data.kits})),
catchError((err: GraphQLError) => {
return of(UserActions.AccountKitActions.GET_KITS_FAIL());
})
)
)
)
)
动作按如下方式分派:
this.store.dispatch(AccountKitActions.GET_KITS());
我唯一看到的是。type不需要在ofType上的动作上。虽然你说它第一次通过,这是令人惊讶的。
ofType(UserActions.AccountKitActions.GET_KITS),
在我的ngrx之旅的早期,我经常发现添加带有console.log参数的tap操作符有助于确定流是如何实际发生的。