
前面分析了redux所有api的源码,接下来分析一下redux常用中间件的源码。因为redux只能处理同步的数据变化,但很多时候需要ajax异步获取数据,所以就需要应用相关中间件来处理。这篇文章就来分析一下异步处理常用中间件
redux-thunk的源码。
applyMiddleware
因为应用中间件需要用到applyMiddleware这一api,所以要结合applyMiddleware的源码一起来分析。
1 | export default function applyMiddleware(...middlewares) { |
redux-thunk
本以为redux-thunk内部实现会很复杂,但其源码就这几行,但要理解这几行代码也并非易事,还是要仔细分析一下。
结合上面以及之前的文章分析的applyMiddleware,来看一下redux-thunk的源码
1 | /* |
所以,我们平时在应用redux-thunk的时候,会定义一个函数,并返回一个新的函数,同时以dispatch getState作为参数
举例说明一下:
1 | export const increment = () => { |
这就是一个典型的应用redux-thunk异步action的写法,而返回函数的参数dispatch getState也正是上面我们分析过的
总结
通过上面逐行代码的分析可以知道,正常redux定义的action只能是对象类型,但使用redux-thunk后,可以以函数作为action,而异步执行的操作可以在放在action函数体内,并在异步操作结束后再dispatch。