多调度或嵌套调度

问题描述 投票:0回答:1

我有两个字段的商店:

  • items: Item[]
  • money: number

当用户购买商品我调用apiService时,如果服务器的响应允许您添加商品(服务器将检查用户是否有足够的钱)我可以在商店中进行两次更改] >:

  1. 将新项目推送到数组中
  2. 减少资金

  3. 我对调度动作的良好做法感到困惑...哪种方法是最好的?

  1. 多次分派-分派AddItem操作和DecreaseMoney操作:
  2. store.dispatch([new AddItem(), new DecreaseMoney()]);
    
  1. 第一个成功时订阅AddItem操作并调度DecreaseMoney操作:
  2. this.actions$.pipe(ofActionSuccessful(AddItem)).subscribe(() => {store.dispatch(new DecreaseMoney()});
    
  1. DecreaseMoney动作内部调度AddItem动作:
  2. @Action(AddItemAction)
      AddItem({ getState, setState }: StateContext<any>) {
        const state = getState();
        return this.http.post(`${apiUrl}/buy`, {}).pipe(
          tap(newItem => {
            setState({...state, items: [...state.items, newItem]});
            dispatch(new DecreaseMoney()); // <---
          })
        );
      }
    

我有两个字段的商店:item:Item [] money:number用户购买商品时,我呼叫apiService,并且如果服务器的响应允许您添加商品(服务器将检查...) >

action ngxs
1个回答
1
投票

如果操作没有改变相同的状态,我建议您使用多重调度,因为它不太冗长。如果您依靠第一个异步操作返回的响应,则我认为嵌套设置是合乎逻辑的。但是,看起来好像您没有向DecreaseMoney()传递任何内容,所以第一种选择似乎最好。

编辑:

© www.soinside.com 2019 - 2024. All rights reserved.