中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue重要修飾符.sync對比v-model的區別是什么

發布時間:2022-07-27 09:25:54 來源:億速云 閱讀:131 作者:iii 欄目:開發技術

這篇文章主要講解了“Vue重要修飾符.sync對比v-model的區別是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Vue重要修飾符.sync對比v-model的區別是什么”吧!

Vue 中的雙向綁定

Vue中的 props等數據是單向流動的,由父級至子級向下綁定的,即:每次父組件更新時,子組件中的所有 props 都會刷新為最新的值。如果在子組件中修改 props ,Vue會向你發出一個警告,且并不能通過修改子組件的數據來更改父組件的數據)。

如果有需求,我們可以在父組件中,子組件的標簽上聲明一個監聽事件,在子組件想要修改數據時使用$emit觸發事件并傳入新的值,通知父組件進行修改。這就可以實現某種程度上的雙向綁定。

真正的雙向綁定會帶來維護上的問題,因為子組件可以變更父組件,且在父組件和子組件兩側都沒有明顯的變更來源。Vue 團隊推薦以 update:myPropName 的模式觸發事件取代直接修改的操作。這就用到了 .sync 修飾符。

Vue 中的 .syc 修飾符

自定義組件中,v-bind命令的 .sync 修飾符同 v-model 一樣,其實本質上都是Vue的語法糖,用于實現父子組件間接的數據雙向綁。需要注意的一點是,Vue3 中已經不再有 .sync 修飾符了,新的 v-model 取代了 Vue2 中的 v-model 和 .sync 修飾符。本文作為 Vue 入門的心得總結,這里討論的是 Vue2中 的 .sync 修飾符。

一言以蔽之,v-bind命令的.sync 修飾符實質就是父組件監聽子組件更新某個props的請求的縮寫語法,一種語法糖。

如:

<Child v-bind:title.sync="title" />

完全等價于:

<Child
  v-bind:title="title"
  v-on:update:title="title = $event"
></Child>

與之配合,在子組件中,需要添加下面這段代碼來通知父組件對這個prop重新賦值:

this.$emit('update:title', newTitle)

這一個 $emit 可以通過綁定事件觸發,也可以使用 watch 監聽等方式來觸發。

此外,當我們用一個對象 obj 同時設置多個 prop 的時候,也可以將這個 .sync 修飾符和 v-bind 配合使用:

<Son v-bind.sync="obj"></Son>
data(){
        return {
            obj:{read:true, name:'', title:'', length:''}
        }
    },

這樣會把 obj 對象中的每一個 property (如 title) 都作為一個獨立的 prop 傳進去,然后各自添加用于更新的 v-on 監聽器。

.sync 使用注意事項

需要注意,帶有 .sync 修飾符的 v-bind命令 不能 和表達式一起使用
(例如 :title.sync=”doc.title + &lsquo;!&rsquo;” 是無效的)。

你只能提供你想要綁定的 property 名,類似 v-model

另外還需要注意將 v-bind.sync 用在一個字面量的對象上,例如 v-bind.sync=”{ title: doc.title }”,是無法正常工作的,因為在解析一個像這樣的復雜表達式的時候,有很多邊緣情況需要考慮。

.sync 與 v-model的比較

.sync 從功能上看和 v-model 十分相似,都是為了實現數據的“雙向綁定”,本質上,也都不是真正的雙向綁定,而是語法糖,這是他們的相同之處。

但相比較之下,.sync 更加靈活,它可以在一個組件內給多個 prop 使用,而 v-model 在一個組件中只能有一個 prop ,在 Vue2 中是這樣。

需要注意,Vue3中 v-model 已經可以給多個prop使用了 

從語法的內容來看,v-model 綁定的值和觸發的事件是較為固定的,根據不同類型的特定組件有對應的綁定值和事件,比如 input 組件,select 組件等表單組件,日期時間選擇組件,顏色選擇器組件等,這些組件所綁定的值使用 v-model 比較合適。

其他情況下,需要父子組件之間數據相互更新,還是使用 .sync.sync 針對更多的是各種的狀態變更,在父子組件之間互相傳遞,是一種 update 操作。

感謝各位的閱讀,以上就是“Vue重要修飾符.sync對比v-model的區別是什么”的內容了,經過本文的學習后,相信大家對Vue重要修飾符.sync對比v-model的區別是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

攀枝花市| 广宗县| 睢宁县| 三门峡市| 滨海县| 乌兰浩特市| 凉城县| 安多县| 福安市| 织金县| 山西省| 泽普县| 林甸县| 柳州市| 新津县| 岳西县| 那曲县| 聂拉木县| 扶风县| 察隅县| 松江区| 宁化县| 南康市| 秦皇岛市| 彩票| 新和县| 红原县| 渝中区| 武功县| 嘉善县| 麻江县| 阿拉善右旗| 武强县| 万盛区| 卓资县| 通江县| 柏乡县| 新密市| 托克逊县| 长垣县| 漯河市|