gpt4 book ai didi

angular - NGXS:ofActionSuccessful 未被触发,但操作显示在 Redux Devtools 上

转载 作者:行者123 更新时间:2023-12-05 07:24:24 25 4
gpt4 key购买 nike

我正在关注 docs 中的缓存示例.在通过 http 调用获取之前,我的 Action 首先查找现有商店。 ofActionSuccesful 在我调用 http 时成功触发,但在从商店返回时不会触发。这是我的商店代码

  @Action(Get)
get(ctx: StateContext<SubmissionStateModel>, action: Get) {
const id = action.payload;
const submissions = ctx.getState().submissions;
const index = submissions.findIndex(submission => parseInt(submission.id, 10) === parseInt(id, 10));

return index > -1
? ctx.dispatch(new GetSuccess(submissions[index]))
: this._submissionService.get(id).pipe(
map(response => {
ctx.patchState({ submissions: [response, ...submissions] });
return ctx.dispatch(new GetSuccess(response));
}),
);
}

从我的组件

      this._actions
.pipe(
ofActionSuccessful(SubmissionActions.GetSuccess),
takeUntil(this._onDestroy$),
)
.subscribe(action => {
this._store.dispatch(new SubmissionActions.SetActive(action.payload.id));
this.submissionEditForm.patchValue(action.payload);
});

最佳答案

快速更新,我能够解决这个问题。 actions 订阅者需要在构造函数中。我在 ngOnInit 中初始化它。最终代码如下所示

  constructor(
private _actions: Actions,
) {
this._actions
.pipe(
ofActionSuccessful(SubmissionActions.GetSuccess),
takeUntil(this._onDestroy$),
)
.subscribe(action => {
this._store.dispatch(new SubmissionActions.SetActive(action.payload.id));
this.submissionEditForm.patchValue(action.payload);
});
}

关于angular - NGXS:ofActionSuccessful 未被触发,但操作显示在 Redux Devtools 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com