【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理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-18tcpdf可以等待vue动态页面加载完成后再生成pdf吗?-icode9专业技术文章分享
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南