Redux的好处不言而喻,但随着应用的代码量和复杂度的与日剧增,redux的管理和维护也变得越来越复杂,需要对Reducer函数进行拆分,拆分后的每一块独立负责管理 state 的一部分。而redux提供了一个combineReducers方法,能很好的解决这个问题。只要引入各个子Reducer函数,这个方法能将各个子涵数合并成大的Reducer
一.使用combineReducers方法首先需要引入
import {combineReducers} from ‘redux’
二.调用该方法,并传入从其他模块引入进来的子reducer,然后导出
import One from '../one/reducer'
import Two from '../two/reducer'
var reducer = combineReducers({
Mone: One,
Mtwo: Two
})
export default reducer;
拆分后可以为每一个模块分配一个Reducer函数,优点是十分有利于管理和维护,让代码更具条理性。
下面是combineReducers的简单实现。
const combineReducers = reducers => {
return (state = {}, action) => {
return Object.keys(reducers).reduce(
(nextState, key) => {
nextState[key] = reducers[key](state[key], action);
return nextState;
},
{}
);
};
}