返回一个总的reducer
管理多个reducer
const store = createStore(combineReducers({
count:countReducer,
}),applyMiddleware(thunk,logger));
export default function combineReducers(reducers) {
//返回一个总的reducer (preState,action) => nextState
return (state = {}, action) => {
//判断状态值是否改变
let flag = false;
const nextState = {};
//将所有的rducer遍历出来
for (let key in reducers) {
let reducer = reducers[key];
nextState[key] = reducer(state[key], action);
//判断当前状态这下次状态是否改变,如果上次为true那就改变了
flag = flag || nextState[key] !== state[key]
}
//如果前后俩个对象长度不一样也发生了改变
flag = flag || Object.keys(nextState).length !== Object.keys(state).length
return flag ? nextState : state;
};
}