1. function createThunkMiddleware(extraArgument) {
    2. return ({ dispatch, getState }) => (next) => (action) => {
    3. if (typeof action === 'function') {
    4. return action(dispatch, getState, extraArgument);
    5. }
    6. return next(action);
    7. };
    8. }
    9. const thunk = createThunkMiddleware();
    10. thunk.withExtraArgument = createThunkMiddleware;
    11. export default thunk;

    1、redux-thunk的源码就这几段代码,正常的我们dispatch(action), 我们需要action的数据格式是一个对象类型,如果我们用了redux-thunk中间件,我们的action就可以是一个function类型。
    2、我们发现,我们上面的代码如果action是一个function类型,就不会执行next函数了,那么后面的中间件要如何执行呢?我们一般在使用thunk中间件时,会在action函数中,再去执行一次dispatch(action),这次执行的action会是一个对象类型,就会通过中间件模型一直往下执行