国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3響應(yīng)式原理

這篇具有很好參考價值的文章主要介紹了vue3響應(yīng)式原理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

  1. 響應(yīng)式的相關(guān)知識

Vue 3 中的響應(yīng)式原理是通過使用 ES6 的 Proxy 對象來實(shí)現(xiàn)的。在 Vue 3 中,每個組件都有一個響應(yīng)式代理對象,當(dāng)組件中的數(shù)據(jù)發(fā)生變化時,代理對象會立即響應(yīng)并更新視圖。

具體來說,當(dāng)一個組件被創(chuàng)建時,Vue 會為組件的 data 對象創(chuàng)建一個響應(yīng)式代理對象。這個代理對象可以監(jiān)聽到數(shù)據(jù)的變化,并在數(shù)據(jù)變化時更新視圖。

當(dāng)組件的 data 對象發(fā)生變化時,代理對象會收到變化通知,然后將變化傳遞給相關(guān)的組件和子組件,從而觸發(fā)組件的重新渲染。這種機(jī)制可以有效地保證視圖和數(shù)據(jù)的同步

  1. 響應(yīng)式的相關(guān)實(shí)現(xiàn)

我們都知道在vue3中主要是采取的ES6中的Proxy來進(jìn)行數(shù)據(jù)的代理,通過reffect反射來實(shí)現(xiàn)動態(tài)的數(shù)據(jù)響應(yīng)式,Vue3數(shù)據(jù)的更新是proxy配合Reffect來實(shí)現(xiàn)的

通過Proxy(代理): 攔截對象中任意屬性的變化,屬性值的讀寫,屬性的增加,屬性的刪除等。

通過Reffect(反射): 對源對象的屬性進(jìn)行操作

其中的Proxy就相當(dāng)于一個攔截器,用來攔截對對象中的修改、添加、刪除任意屬性時,都能被監(jiān)測到,如下代碼。我們通過。

    const person = {
      name:'張三',
      age:18,
      sex:'男'
    }
    const person1 = new Proxy(person,{
      set(target,key,value){ //其中的target是被操作的對象,key是操作對象的key值,value是更新值
        console.log('我正在被修改');
        return target[key]
        // return Reflect.set(target,key,value)
      },
      get(target,key){
        console.log(target,1);
        console.log(key,2);
        console.log('我正在被讀取');
        return target[key]
        // return Reflect.get(target,key)
      }
    })

    person1.age = 19
    person1.sex = '女'
    person1.name = '李四'
    console.log(person1);
    console.log(person);

我們可以看出雖然我們對person1中的相關(guān)屬性進(jìn)行了對應(yīng)的修改,且Proxy所代理的虛擬化對象也監(jiān)測到了我們對這三個屬性的修改,但是也只是單純的監(jiān)測到,沒有進(jìn)行實(shí)質(zhì)上的屬性的響應(yīng)式的處理。因此我們就需要使用reffect映射來完成最后的處理。

vue3響應(yīng)式原理,vue3,JS,javascript,vue.js,前端,Powered by 金山文檔
  1. 什么是reffect

在vue3中通常會將Proxy和reffect兩者配合起來使用,Reflect對象的方法與Proxy對象的方法一一對應(yīng),只要是Proxy對象的方法,就能在Reflect對象上找到對應(yīng)的方法。這就讓Proxy對象可以方便地調(diào)用對應(yīng)的Reflect方法,完成默認(rèn)行為,作為修改行為的基礎(chǔ)。Proxy可以捕獲13種不同的基本操作,這些操作有各自不同的Reflect API方法。如get、set、has、defineProperty等相關(guān)操作。如下代碼就簡單的完成了一個響應(yīng)式的基本操作。

    const person = {
      name:'張三',
      age:18,
      sex:'男'
    }


    const person1 = new Proxy(person,{
      set(target,key,value){
        console.log('我正在被修改');
        return Reflect.set(target,key,value)
      },
      get(target,key){
        console.log(target,1);
        console.log(key,2);
        console.log('我正在被讀取');
        return Reflect.get(target,key)
      }
    })
    person1.age = 19
    person1.sex = '女'
    person1.name = '李四'
    console.log(person1);
    console.log(person);
vue3響應(yīng)式原理,vue3,JS,javascript,vue.js,前端,Powered by 金山文檔
  1. 總結(jié)

以上就是Vue3中數(shù)據(jù)想響應(yīng)式的原理,在Vue2中,數(shù)據(jù)響應(yīng)式主要借助Object.defineProperty()來實(shí)現(xiàn),存在的缺陷是無法操作數(shù)據(jù)的增加和刪除,在Vue3中,數(shù)據(jù)響應(yīng)式主要借助proxy和Reffect配合實(shí)現(xiàn),可以做到實(shí)現(xiàn)數(shù)據(jù)的增刪改查。文章來源地址http://www.zghlxwxcb.cn/news/detail-607671.html

到了這里,關(guān)于vue3響應(yīng)式原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包