今天是周日,昨天玩了一天,嗯,该放松还是得放松嘛,今天来学习下.
1 还是先贴上源码
|
|
由于目前对这个源码理解还是不够透彻,索性拿别人的作为记录得了,后期自己深入研究在自己写demo.
下面这个就是一个简单的中间件
|
|
如果觉得代码有点晦涩难懂,可以进行下babel转化为ES5 如下:
|
|
先从整体上把控下Redux所谓的API都有什么 :
|
|
2 通过源码分析下applyMiddleware这个函数做了什么工作:
其实就是在dispatch一个action和执行reducer之前,增加了一些异步的操作
2.1 返回一个新的store创建器
首先返回一个函数,该函数接受Redux.createStore这个API作为参数,也就是说
|
|
|
|
上面这行代码返回的结果也是一个函数,而这个函数被赋值给enhancedCreateStore
正常的创建store的函数
|
|
增强createStore之后的创建store函数
|
|
2.2 新的store创建器返回的结果增加了原来的dispatch函数功能,从源码中可以看出返回的值和最基础的createStore一样返回的是一个下面的对象:
|
|
只不过dispatch函数增加了一些功能而已.
|
|
以上分析就是applyMiddleware函数所做的一些工作.
|
|
3 走一个小的功能看下具体的效果
|
|
4 自己实现一个最简单的中间件
|
|
|
|
参考
非常感谢作者能从源码的角度剖析文章.