前面分析了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。