浅谈发布订阅模式

发布订阅模式

发布者:唯一的(主动方)
订阅者:多个(被动方)
发布者唉发布一条信息的时候会主动通知到订阅者

接下来,用js实现一个简单的状态管理器
function createStore(reducer,initState={}){
    let state = initState;
    let  subscribeArr =[];
  
    // 注册成为我们状态管理器的订阅者
    function subscribe(subscribeItem){
        subscribeArr.push(subscribeItem)
    }

    // 修改状态
    function dispatch(actions){
      if(typeof actions !== 'object') return alert("actions类型不合法")
      state = reducer(state,actions)
      // 通知订阅者 
      for(let i =0;i<subscribeArr.length;i++){
        subscribeArr[i]()
      }
      return actions
    }

    // 获取仓库状态
    function getState(){
        return state
    }

    return {
        subscribe,
        getState,
        dispatch
    }
}
使用状态管理器
let initState = {
   name:'jinxiaodi',
   count:0
 }

let reducer = (state,actions)=>{
   if(actions.type==="CHANGE_NAME"){
     state.name = actions.name
   }
   if(actions.type=== "ADD"){
     ++state.count
   }
   if(actions.type=== "DIS"){
     --state.count
   }
   return {...state}
}

let store = createStore(reducer,initState)

redux就是利用发布订阅模式来使全局都能拿到仓库里面的数据,有兴趣的同学可以看看的我的其他文章,记得点赞关注一下!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值