Почему мое промежуточное пользовательское промежуточное ПО должно возвращать диспетчерское действие? - PullRequest
0 голосов
/ 08 июля 2019

Я бы установил избыточное пользовательское промежуточное программное обеспечение и изменил бы действие, чтобы вставить аргумент в действие.Но результат равен actions must be plain objects. use custom middleware for async actions, потому что в действии я не return dispatch(myAction)

мое промежуточное ПО для настройки

const injectMiddleware = ({dispatch, getState}) => next => action => {

//skipped all my logic

return(
  typeof action === 'function' ?
    next(action({dispatch, getState, ...anotherCustomFunction}))
    :
    next(action)
)
}

мои действия

export const setUserSessionToken = () => ({dispatch}: Store) => {
  dispatch(setToken)
}

и ошибка actions must be plain objects. use custom middleware for async actions

исправлено с return

export const setUserSessionToken = () => ({dispatch}: Store) => {
  return dispatch(setToken)
}

и no error без return, если не используется пользовательское промежуточное ПО

export const setUserSessionToken = () => (dispatch) => {
  dispatch(setToken)
}

или в настраиваемом промежуточном ПО, просто сделайте

return next(action)

1 Ответ

0 голосов
/ 08 июля 2019

Изменить это

next(action({dispatch, getState, ...anotherCustomFunction}))

как

action({dispatch, getState, ...anotherCustomFunction})

вызов next - это передача объекта действия следующему промежуточному программному обеспечению. Конечно, вы можете передать функцию, которая еще не оценена, но вам понадобится другое промежуточное ПО, такое как thunk, чтобы в конце концов обработать функцию.

...