这个store中只有getState和dispatch

    next是下一层中间件函数thunk

    Redux源码实现:applyMiddleware - 图1

    最里层函数才是中间件函数

    next是下一层中间件函数dispatch

    Redux源码实现:applyMiddleware - 图2

    Redux源码实现:applyMiddleware - 图3

    map会保留里面2层方法

    Redux源码实现:applyMiddleware - 图4

    Redux源码实现:applyMiddleware - 图5

    Redux源码实现:applyMiddleware - 图6

    第一次循环完成之后dispatch变成了最里层的thunk函数

    return dispatch 返回的是logger最里层的函数

    倒着循环调用

    Redux源码实现:applyMiddleware - 图7

    Redux源码实现:applyMiddleware - 图8

    组件里增加键的dispacth->logger->next=thunk->next=reducer

    Redux源码实现:applyMiddleware - 图9