首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NGRX如何在提交时按特定顺序分派多个操作

NGRX如何在提交时按特定顺序分派多个操作
EN

Stack Overflow用户
提问于 2022-05-16 18:41:03
回答 1查看 41关注 0票数 0

我是ngrx的新手,并试图重新设计我的复杂模板驱动的表单,使用ngx格式和ngrx。由于我们有一个复杂的业务规则,在提交之前,我需要修改表单中输入的一些数据,因为我们的api需要一些表单没有提供的数据,或者需要根据条件对其进行不同的格式化。

所以我创建了一个还原器函数来处理数据操作:

代码语言:javascript
复制
export const submitToRmv = (state: RmvServicesState, action) => {
let vehicleArray = [...state.rmvData.rmvServicesUserEnteredData.vehicles];
const transactionType = state.rmvData.transactionType;
if (transactionType === 'PrefillRegistrationTransfer' || vehicleArray[0].reassignedPlate === 'Y') {
  //data manipulation is here, but removed just to simplify example
}
vehicleArray = [...vehicleArray, ...state.rmvData.rmvServicesUserEnteredData.tradeInVehicles];

const newTransactionType = transactionType === 'PrefillNewTitleAndRegistration' || transactionType === 'PrefillRegistrationTransfer' &&
vehicleArray[0].reassignedPlate === 'Y' ? 'Reassign' : transactionType.replace('Prefill', '');

return {
  ...state,
  rmvData: {
    ...state.rmvData,
    transactionType: newTransactionType,
    rmvServicesUserEnteredData: {
      ...state.rmvData.rmvServicesUserEnteredData,
      vehicles: vehicleArray,
    },
  },
};

我还创建了在提交发生时触发的效果。

代码语言:javascript
复制
  rmvSubmit$ = createEffect(() => {
return this.actions$.pipe(
  ofType(RmvPrefillActions.validationSubmission),
  mergeMap((value) =>
  this.rmvService.getReadySubmit(value.getReadyRequest)
  .pipe(map(res => RmvPrefillActions.validationResponse({response: res}))
  )
));

});

但我被困在试图弄清楚如何让我的行动触发之前的效果。我的问题是,如果我对减速器和效果都使用相同的动作,当提交发生时,它似乎首先触发了效果,然后触发了减速器,但是如果我为减速器创建了一个不同的动作,我就会试图找出将该动作分派到哪里,因为我需要向减速器发送状态,然后调用传递到http服务调用中的新状态的效果。

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

https://stackoverflow.com/questions/72264100

复制
相关文章

相似问题

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