【JS】【Vue3】Proxy理解
2022/6/13 23:23:45
本文主要是介绍【JS】【Vue3】Proxy理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
【JS】【Vue3】Proxy理解
在Vue3中,响应式数据的实现方式从原来Vue2的Object.defineProperty()
更换为了Proxy
,本质上还是对数据进行拦截,通过getter
和setter
实现页面的响应式更新。
Vue2中Object.defineProperty
存在的问题:
- 给对象添加或删除属性时,页面不会立即更新
- 通过数组下标修改数组元素,页面不会立即更新
解决方案:
- 使用Vue提供的
Vue.set()
方法【或者vm中的$set
方法】 - 使用数组的方法对数组进行操作,避免使用下标操作数组
Vue3中使用Proxy来代替Object.defineProperty()
,解决了上述问题
Proxy
使用示例:
Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。
let objectDemo = { keyA: 1, keyB: 2, keyC: 3 } let proxyObject = new Proxy(objectDemo, { get(obj, prop){ console.log('getter was called!') console.log(`value is ${obj[prop]}`) return obj[prop] }, set(obj, prop, value){ console.log('setter was called') obj[prop] = value }, deleteProperty(target, prop) { console.log(`${p}属性被删除了`) return delete target[prop] } })
这段代码首先创建了一个普通对象objectDemo
,然后实例化了一个Prox对象,构造函数中分别传入了objectDemo
和一个配置对象。
配置对象中配置了getter和setter,可拦截数据进行操作。同时,当使用delete
关键字删除Proxy对象的属性时,deleteProperty
配置项的函数将会执行。
这篇关于【JS】【Vue3】Proxy理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04React 19 来了!新的编译器简直太棒了!
- 2025-01-032025年Node.js与PHP大比拼:挑选最适合的后端技术进行现代web开发
- 2025-01-03?? 用 Gemini API、Next.js 和 TailwindCSS 快速搭建 AI 推文生成项目 ??
- 2024-12-31Vue CLI多环境配置学习入门
- 2024-12-31Vue CLI学习入门:一步一步搭建你的第一个Vue项目
- 2024-12-31Vue3公共组件学习入门:从零开始搭建实用组件库
- 2024-12-31Vue3公共组件学习入门教程
- 2024-12-31Vue3学习入门:新手必读教程
- 2024-12-31Vue3学习入门:初学者必备指南
- 2024-12-30Vue CLI多环境配置教程:轻松入门指南