根据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]
})),
答案 0 :(得分:1)
您可以为多个动作创建一个reduce:
on(
rawSignalsActions.rawSignalEditInplace,
rawSignalsActions.rawSignalEdit,
(state, { signal }) => {...}
)
将动作分开放置,可以让您更好地跟踪动作的发源地,并有助于保持模块化,以防将来要更改某些内容。我个人建议采取多种操作->为此,一个减速器模式,尽管其他动作也可能起作用。