一鸵膏、combineReducers
redux.combineReducers(reducerMap) 的作用在于合并多個reducer函數(shù),并返回一個新的reducer函數(shù)窒升。
const combineReducers = ( reducers ) => {
return ( state = {}, action ) => {
return Object.keys(reducers).reduce(
( nextState, key ) => {
nextState[key] = reducers[key](
state[key],
action
);
return nextState;
},
{}
);
};
};
1翼悴、combineReducers(reducerMap) 傳入一個對象全度,并返回一個全新的reducer。調用方式跟跟普通的reducer一樣闻镶,也是傳入state甚脉、action。
2铆农、通過combineReducers牺氨,對 store 的狀態(tài)state進行拆分:
(1)reducerMap的key,就是 state 的key墩剖,而調用對應的reducer返回的值猴凹,則是這個key對應的值。
(2)redux.createStore(finalReducers, initialState) 調用時岭皂,同樣會對 state 進行初始化郊霎。這個初始化跟通過普通的reducer進行初始化沒多大區(qū)別。舉例來說爷绘,如果 initialState.todos = undefined书劝,那么 TodoReducer(state, action) 初始傳入的state就是undefined;如果initialState.todos = []土至,那么 TodoReducer(state, action) 初始傳入的state就是[];
(3)store.dispatch(action)购对,finalReducers 里面,會遍歷整個reducerMap陶因,依次調用每個reducer骡苞,并將每個reducer返回的子state賦給state對應的key。
二、