在哪里进行 API 调用以及如何构建操作

Where to make API call and how to structure actions

我最近开始从 ngrx 迁移到 ngxs,并且有一个设计问题,我应该在哪里放置我的一些电话。

在 NGRX 中,我会为每个与 api 的交互创建 3 个动作。类似于:

GetEntities - 表示已进行初始 api 调用 GetEntitiesSuccess - 表示数据成功 return GetEntitiesFail - 表示数据 return 不成功

我会创建一个效果来监视实际调用 API 的 GetEntities 操作,并通过使用结果负载调用 Success/Fail 操作来处理响应。

在 NGXS 中,我是在操作发生时从商店本身进行 api 调用,还是应该使用其他一些 NGXS 对象来处理那些 API 调用,然后以与我在 ngrx 中相同的方式处理操作(通过每次调用创建多个操作)?

我见过的大多数示例以及我的使用方式是从状态中的操作处理程序进行 API 调用,然后当 API returns立即修补状态。

然后在补丁调用之后,如果需要,您可以调度一个动作来指示 success/failure。像这样:

@Action(GetSomeData)
loadData({ patchState, dispatch}: StateContext<MyDataModel>, {payload}: GetSomeData) {

   return this.myDataService.get(payload.id)
   .pipe(
      tap((data) => {
        patchState({ data: data});
        // optionally dispatch here
        dispatch(new GetDataSuccess());
      })
   ); 
}  

这个 q/a 也可能有用