applyMiddleware代码的作用: 增强器通常都使用这样的模式,将store上某个函数的引用存下来,给这 个函数一个新的实现,但是在完成增强功能之后,还是要调用原有的函数, 保持原有的功能。
1: 将getState, dispatch整合出来
2: 让每个中间件都有这两个方法
3: 组合出一个增强版的dispatch(让dispatch可以接收一个函数而不仅仅是一个对象)
function (action) { // 这就是增强后可以接收function 或者 object的主要代码
if (typeof action === 'function') {
return action(dispatch, getState, extraArgument);
}
//next为之前传入的store.dispatch,即改写前的dispatch
return next(action);
};
4: 返回一个新的包含增强dispatch的store对象
比较经典的redux源码解析文章
https://github.com/WisestCoder/blog/issues/1
https://juejin.im/post/5b035c0c51882565bd258f12
redux-devtools使用