zoukankan      html  css  js  c++  java
  • 【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;
      }
    }
     
  • 相关阅读:
    2013年 积木大赛
    Matlab 画图2
    Matlab 画图1
    Matlab 数值计算
    Matlab 条件循环函数
    Non Super Boring Substring 题解(hash+思维)
    Matlab 数组
    Matlab 矩阵
    L
    hdu 1671Phone List
  • 原文地址:https://www.cnblogs.com/nanianqiming/p/10480758.html
Copyright © 2011-2022 走看看