Vue3 数据响应式原理

核心:

javascript 复制代码
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好在哪里?

  1. 效率更高了,Vue2中假设监听某个对象,该对象中有一万个属性,他要循环遍历得到每个属性,并且通过每个属性的Object.defineProperty为每个属性加上set 和 get 方法,那如果有一万个就要加上一万对get 和 set方法,所以效率就很低;Vue3中直接一个代理对象proxy加上Reflect,再调用相关的方法就可以解决这个问题;
  2. Vue3中响应式的话是个深层次的监视,可监听对象里面的对象和数组;
相关推荐
几何心凉几秒前
openFuyao 总体定位和解决方案
前端
IT_陈寒9 分钟前
Vue 3.4 实战:5个被低估的Composition API技巧让我的开发效率提升40%
前端·人工智能·后端
JH灰色15 分钟前
【大模型】-LangChain多模态输入和自定义输出
java·前端·langchain
JIngJaneIL15 分钟前
基于Java + vue校园论坛系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
馬致远40 分钟前
Vue TodoList 待办事项小案例(代码版)
前端·javascript·vue.js
一字白首1 小时前
Vue 进阶,Vuex 核心概念 + 项目打包发布配置全解析
前端·javascript·vue.js
栀秋6661 小时前
从前端送花说起:HTML敲击乐与JavaScript代理模式的浪漫邂逅
前端·javascript·css
刘同学有点忙1 小时前
国际化语言包与Excel自动化双向转换方案
前端
bm90dA1 小时前
前端小记:Vue3引入mockjs开发
前端
渔_1 小时前
SCSS 实战指南:从基础到进阶,让 CSS 编写效率翻倍
前端