redux源码分析:createStore(reducer) 执行过程
creatStore 到底干了什么,下面分析一下执行过程
先看看方法的执行过程
- 对这几个参数进行判断
reducer, preloadedState, enhancer
- 当没有第3个参数的时候,会直接进行后续步骤
- 当含有第3个参数的时候,会直接
return
enhancer(createStore)(reducer, preloadedState)
,由 enhancer
对 createStore
方法进行增强
- 初始化必要的闭包变量
currentReducer/currentState/currentListeners/nextListeners/isDispatching
等,这里相当于创建了一个作用域环境 - 基于闭包环境,生成一些方法
- ensureCanMutateNextListeners:工具方法
- getState:取取得前的 state
- subscribe:对 render 方法的订阅
- dispatch:触发 action 的核心方法
replaceReducer:忽略observable:忽略,与第三方库结合的时候用到的,这里没有深入研究
- 初始化状态:
dispatch({ type: ActionTypes.INIT })
- 返回
createStore
的内容
伪代码如下
fuction createStore(reducer, preloadedState, enhancer){
// 无情的省略号...
// 返回
return {
dispatch,
subscribe,
getState,
replaceReducer,
[$$observable]: observable
}
}