我最近开始从ngrx迁移到ngxs,并遇到了一个设计问题,即我应该在哪里拨打一些电话。
在NGRX中,我将为与api的每次交互创建3个动作。像这样:
GetEntities-表示已进行初始api调用 GetEntitiesSuccess-指示成功返回数据 GetEntitiesFail-指示数据返回失败
我将创建一个效果来监视实际上调用API的GetEntities Action,并通过调用带有结果有效负载的Success / Fail操作来处理响应。
在NGXS中,当操作发生时,我是否应该从商店本身进行api调用,或者应该使用其他一些NGXS对象来处理这些API调用,然后以与在ngrx中相同的方式处理操作(通过为每个呼叫创建多个操作)?
答案 0 :(得分:2)
我所见过的大多数示例以及如何使用它是从状态中的动作处理程序进行API调用,然后在API返回状态后立即对状态进行修补。
然后在补丁程序调用之后,可以根据需要调度操作以指示成功/失败。像这样:
@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());
})
);
}