上一篇分析了createStore,这篇来分析一下combineReducer。当业务复杂的时候,会将reducer拆开,但createStore传入的只能是一个reducer,这个时候就需要combineReducer将所有的reducer结合起来。
combineReducer
看一下combineReducer的源码来进行分析:
1 | //combineReducers方法接收对象形式的reducers,也就是{ a: reducerA, b: reducerB } |
通过上述的分析,其实combineReducers方法就是组合所有传入的reducer,最终返回一个组合后的reducer,其本质还是个reducer,因为createStore接收的第一个参数必须是个纯函数的reducer。当派发action进行state更新时,这个组合后的reducer会遍历所有传入的reducer,找到action.type对应的reducer并进行更改,最终会为了优化,只返回有更改的state。
combineReducers实例:
1 | const numState = { num: 1 } |
结合源码分析以及实际例子可以清晰知道combineReducers的内部实现原理,其实并不复杂,与单个reducer的逻辑基本一致,只不过加了一层封装。