如何在Reducer中对多个动作执行相同的状态转换

问题描述 投票:1回答:1

我根据this video中的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, (state, { signal }) => {
return {
  ...state,
  selectedRawSignal: entitiesSelectors.selectEntities(state)[signal.id]
 };
}),
on(rawSignalsActions.rawSignalEdit, (state, { signal }) => ({
  ...state,
  selectedRawSignal: entitiesSelectors.selectEntities(state)[signal.id]
})),
angular ngrx typescript-typings typescript2.0 ngrx-store
1个回答
0
投票

您可以为多个动作创建一个reduce ::>

on(
  rawSignalsActions.rawSignalEditInplace,
  rawSignalsActions.rawSignalEdit,
  (state, { signal }) => {...}
)

将您的操作分开,可以更好地跟踪从何处分发操作,并有助于保持模块化,以防将来需要更改。我个人建议采取多种措施->为此,一个减速器模式,尽管其他方法也可能起作用。

© www.soinside.com 2019 - 2024. All rights reserved.