Redux原码解析
redux导出的api:包括createStore,combineReducers,以及store的dispatch,getState,subscribe等。
createStore
createStore函数接受reducer,preloadedState,enhancer三个参数,preloadedState和enhancer是可选参数。返回store对象,store对象具有dispatch,getState,subscribe等方法。这里运用了闭包,因此通过导出的store对象方法访问状态。
combineReducer
combineReducer接受一个由多个reducer组成的对象,然后返回一个reducer函数,这个reducer函数的签名和普通reducer一样,而在内部则是依次调用reducerMapObject里所有reducer更新状态。
bindActionCreator
此方法在react-redux的mapDispatchToProps里运用较多。作用是将actionCreator函数转化成dispatch形式
applyMiddleware
applyMiddleware接受中间件,返回storeenhancer。是一个高阶函数,这里有点绕,但是作用是将middleware和基础的dispatch compose起来,作为store的dispatch函数。
middleware举例- redux-thunk源码
当使用了redux-thunk中间后,增强的dispatch接受actionCreator后优先走action==function的分支,因此也就是调用actionCreator函数并且传入dispatch,getState等参数,当actionCreator的异步操作结束后调用dispatch,这次传参是对象,就走next分支,也就是基本的dispatch功能。