我正在使用redux-thunk,我也想用超时调度一些动作。由于某些原因(我希望对象中的所有超时,我希望能够取消它们,现在并不重要)我想要自定义'超时中间件'和'动作增强'
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操作不是。请帮助我了解如何将延迟操作重新路由回中间件链。
示例代码:
答案 0 :(得分:0)
您的代码应该如下所示
const action3 = () => (dispatch, getState) => {
dispatch({
type: 'action3'
});
}
每当你使用thunk中间件时,你必须调用dispatch来调度动作,你不能返回一个对象。
以下是更正后的代码:http://codepen.io/anon/pen/pEKWRK?editors=0010
希望这有帮助。