我将设置redux自定义中间件,并更改操作以在操作中插入参数。但是结果是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)
答案 0 :(得分:0)
更改此
next(action({dispatch, getState, ...anotherCustomFunction}))
为
action({dispatch, getState, ...anotherCustomFunction})
下一步调用是将操作对象传递给下一个中间件。当然,您可以传递一个尚未求值的函数,但最终将需要另一个像thunk这样的中间件来处理该函数。