【react】---手动封装一个简易版的redux---【巷子】

本文深入解析了Redux的工作原理,包括store的创建、action的分发、reducer的使用以及combineReducers函数的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
  }
}
 

 

转载于:https://www.cnblogs.com/nanianqiming/p/10480758.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值