首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用http服务从操作(NGXS)返回值

使用http服务从操作(NGXS)返回值
EN

Stack Overflow用户
提问于 2019-09-06 18:55:39
回答 1查看 3.7K关注 0票数 4

还有其他更干净的方法可以通过操作(NGXS)从http服务返回值吗?还是我们应该总是更新“结果”状态,以便在您返回时进行咨询?

下面的代码工作,非常接近于文档。然而,在我看来,它并不是很干净。

代码语言:javascript
代码运行次数:0
运行
复制
export class DeleteAction {
  static readonly type = '[Test] Delete';
  constructor(public id: number) { }
}
代码语言:javascript
代码运行次数:0
运行
复制
@State<TestStateModel>({
  name: 'test',
  defaults: {
    result: null
  }
})
export class TestState {

  constructor(
    private testService: TestService) {
  }

  @Selector()
  static getResult(state: TestStateModel): NotificationResult {
    return state.result;
  }

  @Action(DeleteAction)
  public delete({ patchState }: StateContext<TestStateModel>, { id }: DeleteAction) {
    return this.testService
      .delete(id)
      .pipe(
        take(1),
        tap(result => {
          patchState({ result });
        })
      );
  }
代码语言:javascript
代码运行次数:0
运行
复制
@Component({
  templateUrl: './test.component.html'
})
export class TestComponent {

    @Select(SubjectState.getResult) result$;

    private delete(id: number): void {
    this.isLoading = true;
    this.store.dispatch(new DeleteAction(id))
      .pipe(withLatestFrom(this.result$))
      .subscribe(([_, r]) => {
        const result = r as NotificationResult;
        if (result.isValid) {
          // ...
        } else {
          // ...
        }
        this.isLoading = false;
      });
  }
}
代码语言:javascript
代码运行次数:0
运行
复制
export interface NotificationResult {
  isValid: boolean;
  messages: NotificationMessage[];
}

由于除了调用"Delete“方法之外,我不会使用”结果“,因此似乎没有必要为此目的创建一个状态。

还有其他更优雅的方式吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-07 19:05:24

如果不将删除结果链接到调度,则会更干净。相反,目前采用的删除方法是:

  1. 分派删除操作
  2. 等待操作完成
  3. 查看状态的最新值。
  4. 对此作出反应

你可以:

  1. 让delete方法分派delete操作
  2. 订阅对$result的更改(例如在init方法中),并对所得到的更改做出适当的反应

这在我看来更干净。有什么想法?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57827267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档