vue雙向綁定的三種方法.

在 Vue.js 中,使用 .sync 修飾符時(shí),能夠?qū)崿F(xiàn)父組件和子組件之間的雙向綁定。這種雙向綁定的實(shí)現(xiàn)是基于一個(gè)約定:使用 .sync 修飾符綁定的屬性需要滿足以下條件:

屬性名稱需要帶有 v-bind 的動(dòng)態(tài)屬性綁定語(yǔ)法。
在子組件內(nèi)部,通過(guò) $emit 觸發(fā)一個(gè)事件來(lái)更新該屬性的值。
這樣,父組件中綁定的屬性會(huì)實(shí)時(shí)響應(yīng)子組件的變化,而子組件通過(guò)觸發(fā)事件將變化傳遞給父組件。

在你提供的代碼中,使用對(duì)象 paraObject 可以實(shí)現(xiàn)雙向綁定,而使用普通的變量 isShow 則不能實(shí)現(xiàn)雙向綁定。這是因?yàn)閷?duì)象是引用類型,對(duì)象的屬性可以通過(guò)引用來(lái)共享,從而實(shí)現(xiàn)雙向綁定。

在對(duì)象的情況下,當(dāng)你在父組件中更新 paraObject.isShow 的值時(shí),子組件中綁定的 :is-show.sync 屬性會(huì)實(shí)時(shí)更新,并且子組件通過(guò) $emit 觸發(fā)的事件也會(huì)同步更新父組件中的 paraObject.isShow 值。

而在普通變量的情況下,變量是按值傳遞的,無(wú)法直接共享內(nèi)存地址,所以無(wú)法實(shí)現(xiàn)雙向綁定。如果你希望在子組件中更新變量的值并反映到父組件中,你需要通過(guò)事件的方式顯式地將變量的新值傳遞給父組件。

綜上所述,使用對(duì)象作為屬性可以實(shí)現(xiàn)雙向綁定,而普通變量則需要通過(guò)事件的方式來(lái)進(jìn)行值傳遞。


image.png
2.16.4 直接sync  props是沒(méi)問(wèn)題的, 而在2.17.4 sync必須是date里的值, 否則會(huì)報(bào)錯(cuò)
使用常量, 子組件$emit事件, vue 2.7以上需要配合watch使用, 真是吐了
使用對(duì)象, 子組件不改變引用就不會(huì)發(fā)生問(wèn)題, 真的好用, 文檔真的不推薦. 如果嚴(yán)格控制, 暫時(shí)沒(méi)發(fā)現(xiàn)什么問(wèn)題
使用computed
showDialog:{
            get() {
                return this.visible;
            },
            set(value) {
                // 在這里可以根據(jù)需要進(jìn)行相應(yīng)的邏輯處理
                // 例如,可以觸發(fā)一個(gè)自定義事件來(lái)通知父組件更新 prop 值
                this.$emit('update:visible', value);
            }
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 五一假期在家補(bǔ)了課,看到雙向綁定與單向數(shù)據(jù)流的概念。瓦特,我之前以為Vue的V-model就是雙向數(shù)據(jù)流,其實(shí)不然...
    南藍(lán)NL閱讀 13,623評(píng)論 1 3
  • 父組件 子組件 給組件傳遞一份數(shù)據(jù)時(shí),并且要實(shí)現(xiàn)雙向綁定,可以使用v-model實(shí)現(xiàn)接收的屬性是value自定義的...
    我的安娜有點(diǎn)菜閱讀 283評(píng)論 0 0
  • Vue雙向綁定實(shí)例教程 雙向綁定簡(jiǎn)介 我們知道Vue是一個(gè)典型的MVVM框架,Vue在動(dòng)態(tài)綁定這一塊提供了豐富的A...
    KQin閱讀 999評(píng)論 0 0
  • 參考 Vue.js MDN 一、 vue 雙向數(shù)據(jù)綁定語(yǔ)法 Vue.js作為前端MVVM三大框架之一,最核心的功能...
    zhiqiangx閱讀 406評(píng)論 0 0
  • 前言 在之前面試中,有被問(wèn)到這個(gè)問(wèn)題,雖然了解過(guò)是劫持Object.defineProperty方法,但是其細(xì)節(jié)并...
    Aleph_Zheng閱讀 1,194評(píng)論 0 5

友情鏈接更多精彩內(nèi)容