在项目中,当我们使用redux对组件数据进行管理时,通常需要创建多个reducer,每个 reducer 只负责管理全局 state 中它负责的一部分。每个 reducer 的 state 参数都不同,分别对应它管理的那部分 state 数据。

Redux提供了combineReducers这个方法来合并多个reducers函数

import { combineReducers } from 'redux'

const reducer = combineReducers({
counters: counters,
todos: todos,
})

export default reducer;

接下来,我们看看Redux源码中,combineReducers到底做了什么。


源码

​ 首先combineReducers将传入的reducers对象的key,遍历每一个key,检查传入的reducers是否是一个函数。将是函数的reducer放入finalReducers这个对象。

image-20220704191943804

combineReducers返回combination函数(因为createStore接受的reducer是个函数)。

这个combination会根据传入的每一个reducer计算出对应的State。

image-20220704192806385


参考: