React--封装redux--

export let createStore = (reducer)=>{
//定义默认的state
let state = {};

//定义默认的action
let actionTypes = "@@redux/INIT"+Math.random();
let initAction = {type:actionTypes}

//将所以需要监听的函数放在这个里面
let listeners = []

//定义getState函数
let getState = ()=>state;

//定义事件订阅函数
let subscribe = (cb)=>{
  listeners.push(cb);
}

//定义事件派发函数 用来调用action
let dispatch = (action=initAction)=>{

//调用reducer获取新的state
state = reducer(state,action);

//遍历所以需要监听的函数
listeners.map((cb)=>{
    cb();
  })

}
dispatch();

return {
  getState,
  dispatch,
  subscribe
  }
}

 

const combineReducers = (reducers)=>{

  let newState = {};
  return function(state,action){

    for(var key in reducers){
      newState[key] = reducers[key](state[key],action)
    }

    return newState;
  }
}

posted on 2019-08-12 11:15  凍凍啊  阅读(226)  评论(0)    收藏  举报