vue3中proxy的基本用法說明
更新時間:2022年05月27日 09:45:09 作者:愛生活,愛編程
這篇文章主要介紹了vue3中proxy的基本用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
vue3 proxy基本用法
新的改變
- 我們的vue3 使用proxy 來代替vue2 的 Object.defineProperty
- 效率更高,值得我們學習
基本使用
<script>
var target = {
name: "xiaoming",
age: 18
}
// handler 是一個對象
const handler = {
set(target, prop, value) {
let result = Reflect.set(target, prop, value)
console.log("設置的操作" + result)
return true;
},
get(target, value) {
let result = Reflect.get(target, value)
console.log("獲取的的操作" + result)
}
}
let proxy = new Proxy(target, handler);
proxy.coure = "java"
console.log(proxy)
</script>
這個打印效果:

vue3中proxy代理
理解Proxy代理
這里模擬一個偽Vue,使用Proxy代理為響應式
<div id='app'></div>
<script>
const data = {
name:'hello',
age:10
}
const vm = new Proxy(data,{
get(target,p,receiver){
// 1.target就是代理的data對象
// 2.p 就是data中的每一個屬性(name.age)
// 3.receiver就是Proxy代理對象本身
return target[p]
},
set(target,p,value,receiver){
// 1.value就是最新的值
console.log('receiver:',receiver)
if(taregt[p]===value) return
target[p] = value
document.querySelector('#app').textContent = target[p]
}
})
vm.name = 'hello,vue'
</script>
當我們執(zhí)行 vm.name = 'hello,vue'時,觸發(fā)了set方法,此時receiver

再次打印vm,此時,響應的vm對象上的name變成了新的值,說明此時vm的數據變成了響應式的了

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

