VUE3 响应式原理 ——学习心得

116 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 最近在学习VUE3,发现vue3的响应式原理和uve2不太一样,所以想要记录一下学习的心得

一、vue2响应式原理——数据劫持(Object.defineProperty())

let person = {
  name: '张三'
}
let p = {}
Object.defineProperty(p, 'name', {
  // get函数,监测数据读取
  get() {
    return person.name
  },
  // set函数,监测数据更改
  set(value) {
    person.name = value
  }
})

1651324734781.png

二、vue2响应式的缺点

## 1、无法直接监测到对象的删除属性和添加属性
## 2、无法直接监测到对数组索引的操作

三、vue3响应式原理

## 1、基本类型的响应式
    vue3对基本类型的响应式和vue2是一样的,都是使用的数据劫持
## 2、 对象类型的响应式
    vue3对对象类型的响应式是通过Proxy()和Reflect实现的
     let person = {
        name: '张三',
        age: 18,
     }
    let p = new Proxy(person, {
      get(target,propName) {
       return Reflect.get(target,propName)
     },
     set(target,propName,value) {
      Reflect.set(target,propName,value)
     },
     deleteProperty(target,propName){
      return Reflect.deleteProperty(target,propName)
     }
   })
   

1651324734781.png