vue 之 .sync 修飾符示例詳解
在一些情況下,我們可能會需要對一個 prop (父子組件傳遞數(shù)據(jù)的屬性) 進(jìn)行“雙向綁定”。
在vue 1.x 中的 .sync 修飾符所提供的功能。當(dāng)一個子組件改變了一個帶 .sync 的prop的值時(shí),這個變化也會同步到父組件中所綁定的值。
這很方便,但也會導(dǎo)致問題,因?yàn)樗茐牧藛蜗驍?shù)據(jù)流。(數(shù)據(jù)自上而下流,事件自下而上走)
由于子組件改變 prop 的代碼和普通的狀體改動代碼毫無區(qū)別,所以當(dāng)你光看子組件的代碼時(shí),你完全不知道它合適悄悄地改變了父組件的狀態(tài)。
這在 debug 復(fù)雜結(jié)構(gòu)的應(yīng)用時(shí)會帶來很高的維護(hù)成本。于是我們在 vue 2.0 中移除了 .sync 。
但是在實(shí)際應(yīng)用中,我們發(fā)現(xiàn) .sync 還是有其適用之處的,比如在開發(fā)可復(fù)用的組件庫時(shí)。(懵逼○△○)
我們需要做的只是 讓子組件改變父組件狀態(tài)的代碼更容易被區(qū)分。
于是從 vue 2.3.0 開始,我們重新引入了 .sync 修飾符,但是這次它只是作為一個編譯時(shí)的語法糖存在。他會被自動擴(kuò)展為一個 自動更新父組件屬性的 v-on 監(jiān)聽器。
例如
<child :foo.sync=”msg”></child> 就會被擴(kuò)展為: <child :foo=”bar” @update:foo=”val => bar = val”> (@是v-on的簡寫)
當(dāng)子組件需要更新 foo 的值的時(shí)候,他需要顯示的觸發(fā)一個更新事件: this.$emit( “update:foo”, newValue );
初始狀態(tài):
點(diǎn)擊之后的狀態(tài):
原理就是父組件向子組件傳遞了一個函數(shù):function (newValue) { this.msg = newValue; }
當(dāng)使用一個對象一次性設(shè)置多個屬性的時(shí)候,這個 .sync 修飾符也可以和 v-bind 一起使用。
例如: <child v-bind.sync = “{ message: msg, uC: uc}”></child>
(不能寫成 :.sync="{*********}",否則會報(bào)錯的)
這個例子會為 message 和 uC 同時(shí)添加用于更新的 v-on 監(jiān)聽器。
總結(jié)
以上所述是小編給大家介紹的vue 之 .sync 修飾符示例詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時(shí)回復(fù)大家的!
相關(guān)文章
使用Vue.$set()或者Object.assign()修改對象新增響應(yīng)式屬性的方法
vue代碼中,只要在data對象里定義的對象,賦值后,任意一個屬性值發(fā)生變化,視圖都會實(shí)時(shí)變化,這篇文章主要介紹了使用Vue.$set()或者Object.assign()修改對象新增響應(yīng)式屬性,需要的朋友可以參考下2022-12-12vuejs+element UI點(diǎn)擊編輯表格某一行時(shí)獲取內(nèi)容填入表單的示例
這篇文章主要介紹了vuejs+element UI點(diǎn)擊編輯表格某一行時(shí)獲取內(nèi)容填入表單的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10vue中的attribute和property的具體使用及區(qū)別
本文主要介紹了vue中的attribute和property的具體使用及區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09el-tree使用獲取當(dāng)前選中節(jié)點(diǎn)的父節(jié)點(diǎn)數(shù)據(jù)
本文主要介紹了el-tree使用獲取當(dāng)前選中節(jié)點(diǎn)的父節(jié)點(diǎn)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10el-input寬度跟隨輸入內(nèi)容自適應(yīng)的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于el-input寬度跟隨輸入內(nèi)容自適應(yīng)的實(shí)現(xiàn)方法,我們再實(shí)際應(yīng)用中可能需要input文本框能夠根據(jù)輸入字符的所占據(jù)的寬度自動調(diào)節(jié)尺寸,需要的朋友可以參考下2023-08-08Vue cli構(gòu)建及項(xiàng)目打包以及出現(xiàn)的問題解決
這篇文章主要介紹了Vue cli構(gòu)建及項(xiàng)目打包以及出現(xiàn)的問題解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08