vue3源码分析 reactive原理

Vue 3 的响应式实现原理主要是通过 Proxy 对象来实现的。在 Vue 3 中,每个响应式对象都会被包装成一个 Proxy 对象,当访问这个对象的属性时,会触发 get 拦截器函数,当修改这个对象的属性时,会触发 set 拦截器函数。实现这个功能的方法是reactive()

export function reactive(raw) {
  return new Proxy(raw, {
    get(target, key) {
      // target就是raw,key就是raw的key
      // raw = {foo : 1}  target就是raw,key就是foo
      const res = Reflect.get(target, key);
      //  track 收集依赖
      track(target, key);
      return res;
    },
    set(target, key, value) {
      const res = Reflect.set(target, key, value);
      //  trigger 触发依赖
      trigger(target, key);
      return res;
    },
  });
}

在访问这个对象的属性时,调用track()收集依赖。修改这个对象的属性时,会调用trigger()触发依赖

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值