const createStore = (reducer)=>{ let state = {};//默认的state对象 let lists = [];//存贮订阅事件 let actiontypes = "@@init" //默认的type let initaction = { type :actiontypes //默认的action } const dispatch = (action = initaction)=>{ state = reducer(state,action)//将action给了store,store给了reducer 最后reducer修改数据返回state lists.map(cb=>{ cb();//通知组件更新 }) } const getState = ()=>state //将state return出去 const subscribe = (cb)=>{ lists.push(cb)//订阅事件(数据更新) } dispatch();//初始化 return { dispatch, getState, subscribe } } const conbineRdeducers = (reducers)=>{ const newState = {}; //{tab:{},num:{}} return function (state,action) { //reducers为一个函数 所以要ruturn出去一个函数 for(let key in reducers){//通过遍历将key值放入newState中 newState[key] = reducers[key](state[key],action) } return newState } } export { createStore, conbineRdeducers }