Angular 如何为减速器中的多个操作执行相同的状态转换

Angular 如何为减速器中的多个操作执行相同的状态转换,angular,ngrx,typescript-typings,typescript2.0,ngrx-store,Angular,Ngrx,Typescript Typings,Typescript2.0,Ngrx Store,根据Mike Ryan在中的建议,我为我的应用程序创建了独特的操作 但是我有一些动作导致了相同的状态转换。如何在不传递最佳实践的情况下实现相同的状态转换,即为两个不同的事件调用公共操作 我的行动是 export const rawSignalEditInplace = createAction( RawSignalsActionTypes.RAW_SIGNAL_EDIT_INPLACE, props<{ signal: RawSignal }>() ); export co

根据Mike Ryan在中的建议,我为我的应用程序创建了独特的操作 但是我有一些动作导致了相同的状态转换。如何在不传递最佳实践的情况下实现相同的状态转换,即为两个不同的事件调用公共操作

我的行动是

export const rawSignalEditInplace = createAction(
  RawSignalsActionTypes.RAW_SIGNAL_EDIT_INPLACE,
  props<{ signal: RawSignal }>()
);

export const rawSignalEdit = createAction(
  RawSignalsActionTypes.RAW_SIGNAL_EDIT,
  props<{ signal: RawSignal }>()
);

可以为多个操作创建一个减速器:

on(
rawSignalsActions.rawSignalEditInplace,
rawSignalsActions.rawsignalsedit,
(状态,{signal})=>{…}
)

保持动作的独立性可以让您更好地跟踪动作从何处发出,并帮助您保持模块化,以防将来需要更改。出于这个原因,我个人推荐多个操作->一个减速机模式,尽管其他模式也可以使用。

您可以为多个操作创建一个减速机:

on(
rawSignalsActions.rawSignalEditInplace,
rawSignalsActions.rawsignalsedit,
(状态,{signal})=>{…}
)
保持动作的独立性可以让您更好地跟踪动作从何处发出,并帮助您保持模块化,以防将来需要更改。出于这个原因,我个人推荐多动作->一个减速器模式,尽管其他模式也可以

on(rawSignalsActions.rawSignalEditInplace, (state, { signal }) => {
return {
  ...state,
  selectedRawSignal: entitiesSelectors.selectEntities(state)[signal.id]
 };
}),
on(rawSignalsActions.rawSignalEdit, (state, { signal }) => ({
  ...state,
  selectedRawSignal: entitiesSelectors.selectEntities(state)[signal.id]
})),