核心:
-
通过Proxy(代理): 拦截对data任意属性的任意(13种)操作, 包括属性值的读写, 属性的添加, 属性的删除等…
-
通过 Reflect(反射): 动态对被代理对象的相应属性进行特定的操作文章来源:https://www.toymoban.com/news/detail-665708.html
const userData = {
name: "John",
age: 12
};
let proxyUser = new Proxy(userData, {
// 拦截读取属性值
get (target, prop) {
return Reflect.get(target, prop)
},
// 拦截设置属性值或添加新属性
set (target, prop, value) {
return Reflect.set(target, prop, value)
},
// 拦截删除属性
deleteProperty (target, prop) {
return Reflect.deleteProperty(target, prop)
}
})
// 设置属性值
proxyUser.name = 'bob'
proxyUser.age = 13
// 添加属性
proxyUser.sex = '男'
console.log(user)
// 删除属性
delete proxyUser.sex
console.log(user)
Vue3的响应式比Vue2好在哪里?文章来源地址https://www.toymoban.com/news/detail-665708.html
- 效率更高了,Vue2中假设监听某个对象,该对象中有一万个属性,他要循环遍历得到每个属性,并且通过每个属性的Object.defineProperty为每个属性加上set 和 get 方法,那如果有一万个就要加上一万对get 和 set方法,所以效率就很低;Vue3中直接一个代理对象proxy加上Reflect,再调用相关的方法就可以解决这个问题;
- Vue3中响应式的话是个深层次的监视,可监听对象里面的对象和数组;
到了这里,关于Vue3 数据响应式原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!