applyMiddleware这个Api在应用Redux中间件时使用,比如平时开发用的react-redux、redux-thunk、redux-saga等工具,都需要应用applyMiddleware将其与redux结合才可以使用。
applyMiddleware
applyMiddleware的源码也不多,但也需要仔细读一下才能理解:
1 | //applyMiddleware接收任意多个function类型的参数,将其转换成数组传入,并返回一个高阶函数 |
通过上面的分析可以知道,applyMiddleware最终返回的还是一个createStore,只不过是应用了其它中间件进行封装,并更改了dispatch这一Api
applyMiddleware实例:
1 | import { applyMiddleware } from 'redux' |
所以,applyMiddleware并不会改变原来createStore内部除dispatch之外的其它方法,因为在日常应用中间件的时候,大多是在处理异步、观察日志等场景下应用,而这些场景都是要在派发action时触发。可以有人会说react-redux这个常用的中间件是要在每个组件中都获取到状态,这不需要更改getState吗?其实这个中间件并不会改变原有的getState方法,因为它是应用了React的context Api将数据传递到每个组件中,后续也会推出react-redux这一中间件的源码分析。
总结
以上的五篇文章分别对Redux中五个Api进行了具体分析,经过详细解读后,其实可以发现,Redux底层的实现原理并不复杂,每一个Api的内部逻辑相对来说都很清晰,但每一个的内部都运用了大量的Javascript的基础知识,像闭包、原型链、高阶函数、ES6等,尤其是闭包,redux可以说将其发挥到了极致,这也正是表明了这个库为什么如此受欢迎。
通过源码分析,可以加深对Redux整体架构的理解,同时在日常开发中使用起来能够更加得心应手。