Redux 超时 thunk 错误 "Actions must be plain objects"

Redux timeout thunk error "Actions must be plain objects"

我正在使用 redux-thunk,我还想分派一些超时操作。由于某些原因(我想要一个对象中的所有超时,我希望能够取消它们,现在并不重要)我想要自定义 'timeout middleware' 和 'action enchancer'

enchancer 只会发出特殊类型的动作:

const addTimeoutToAction = (delay, action) => ({
  type: 'TIMEOUT'
  , delay
  , action
})

中间件只是捕获它并且应该在超时结束后调度操作

({dispatch, getState}) => next => action => {
  if (action && action.type === 'TIMEOUT') {
    setTimeout(() => {
      dispatch(action.action);
    }, action.delay)
  }
  next(action);
}

所以我的期望是中间件中的调度函数会将操作发送回中间件链,在那里它会再次开始遍历。

我的示例代码适用于普通操作,但 thunked 操作不适用。请帮助我了解如何将延迟的操作重新路由回中间件链。

示例代码:

http://codepen.io/Fen1kz/pen/zKadmL?editors=0010

您的代码应该如下所示

const action3 = () => (dispatch, getState) => {
    dispatch({
        type: 'action3'
    });
}

无论何时使用 thunk 中间件,都必须调用 dispatch 来调度操作,不能 return 一个对象。

这是更正后的代码笔:http://codepen.io/anon/pen/pEKWRK?editors=0010

希望对您有所帮助。