redux-组合函数(compose)理解

redux-组合函数(compose)理解

详解
redux 提供了 applyMiddleware 这个 api 来加载 middleware,两者联系如下:
redux-组合函数(compose)理解_第1张图片

组合的中中间件函数如下:

function thunk({ dispatch, getState }) {
  return next => action =>
    typeof action === 'function' ?
      action(dispatch, getState) :
      next(action)
}

compose函数如下:

function compose(...funcs) {
  if (funcs.length === 0) {
    return arg => arg
  }

  if (funcs.length === 1) {
    return funcs[0]
  }

  return funcs.reduce((a, b) => (...args) => a(b(...args)))
  // reduce() 方法对累加器和数组中的每个元素 (从左到右)应用一个函数
}

中间件处理返回新的dispatch

chain = middlewares.map(middleware => middleware(middlewareAPI))
dispatch = compose(...chain)(store.dispatch)
// 每次更新next,最后返回一个新的dispatch

你可能感兴趣的:(总结)