Как использовать `handleActions` для обработки различных типов полезных данных? - PullRequest
0 голосов
/ 17 июня 2019

Я использую handleActions из redux-actions, как показано ниже:

export const productReducer = handleActions<Product, ProductActionProps>(
  {
    [ProductActionType.SEARCH_STAMP]: (state, { payload }) => {
        ...
    },
    [ProductActionType.SEARCH_PRODUCT]: (state, { payload }) => {
        ...
    },


Он определяет тип полезной нагрузки как ProductActionProps.Это работает нормально, если все действия используют один и тот же тип полезной нагрузки.Но мне нужно добавить еще один тип действия в этот код, чтобы прослушать изменения route в приложении.Это действие использует другой тип, и мне интересно, как лучше всего справиться с этим.

Я думаю о том, чтобы прикрепить новый тип действия как ProductActionProps | RouteActionProps, как показано ниже:

export const productReducer = handleActions<Product, ProductActionProps | RouteActionProps>(
  {
    [ProductActionType.SEARCH_STAMP]: (state, { payload }) => {
        ...
        const { text } = payload as ProductActionProps;
    },
    [ProductActionType.SEARCH_PRODUCT]: (state, { payload }) => {
        ...
        const { text } = payload as ProductActionProps;
    },

Но проблема в том, что мне нужно привести тип в каждом обработчике действий, какconst { text } = payload as ProductActionProps;.Есть ли лучший способ справиться с этим делом?

...