0

我是 NGXS 的新手,我正在尝试完全理解这些文档,这样我就可以在知道自己在做什么的情况下开始使用它。

在此处的此代码段中,我有一件事我不明白。

export class ZooState {
  constructor(private animalService: AnimalService) {}

  @Action(FeedAnimals)
  feedAnimals(ctx: StateContext<ZooStateModel>, action: FeedAnimals) {
    return this.animalService.feed(action.animalsToFeed).pipe(tap((animalsToFeedResult) => {
      const state = ctx.getState();
      ctx.setState({
        ...state,
        feedAnimals: [
          ...state.feedAnimals,
          animalsToFeedResult,
        ]
      });
    }));
  }
}

就在这段代码下面,它说:

你可能会注意到我返回了 Observable 并且只是轻点了一下。如果我们返回 Observable,框架会自动为我们订阅它,所以我们不必自己处理。此外,如果我们希望 store dispatch 函数只有在操作完成后才能完成,我们需要返回它以便它知道。

框架将订阅this.animalService.feed,但为什么呢?

4

1 回答 1

1

动作 FeedAnimals 使用注入的服务 AnimalService 来喂养在动作的有效负载中传递的动物。推测该服务是异步操作并返回一个 Observable。该 Observable 的值通过 tap 函数访问,并用于根据成功完成更新 ZooState 状态上下文。

为了专门使用 NGXS 和一般的 Angular,你真的必须了解 RxJS……这是我的 goto 文档页面

于 2018-10-31T18:51:17.840 回答