vue中v-model和.sync修飾符區別
兩者共同點
v-model的本質
<!--v-model寫法-->
<my-component type="text" v-model="value">
<!--展開語法糖後的寫法-->
<my-component type="text"
:value="value"
@input="value = $event.target.value"
>
<!--
預設針對原生元件input事件,但是如果子元件定義了針對事件
model: {
prop: "value",
event: "update"
},
則編譯為
-->
<my-component type="text"
:value="value"
@update="(val) => value = val"
>
.sync本質
<!--語法糖.sync-->
<my-component :value.sync="value" />
<!--編譯後的寫法-->
<my-component
:value="msg"
@update:value="(val) => value = val"
>
兩者本質都是一樣,並沒有任何區別: “監聽一個觸發事件”="(val) => value = val"。
細微之處的區別
1.只不過v-model預設對應的是input或者textarea等元件的input事件,如果在子元件替換這個input事件,其本質和.sync修飾符一模一樣。比較單一,不能有多個。
// 子元件可以用自定義事件,來替換v-model預設對應的原生input事件,只不過我們需要在子元件手動 $emit
model: {
prop: "value",
event: "update"
},
- 一個元件可以多個屬性用.sync修飾符,可以同時"雙向繫結多個“prop”,而並不像v-model那樣,一個元件只能有一個。
總結功能作用場景:
1.v-model針對更多的是最終操作結果,是雙向繫結的結果,是value,是一種change操作。
比如:輸入框的值、多選框的value值列表、樹結構最終繫結的id值列表(ant design和element都是)、等等...
2..sync針對更多的是各種各樣的狀態,是狀態的互相傳遞,是status,是一種update操作。
比如:元件loading狀態、子選單和樹結構展開列表(狀態的一種)、某個表單元件內部驗證狀態、等等....
image.png
但是也有例外,就是v-model也可以替代部分.sync的情況,這是針對於這個元件只有一個功能就是切換狀態的時候,這個狀態就是最終操作值,這時候可以替代.sync修飾符。使用兩種不同的方式雙向繫結,能夠讓我們快速理解元件的結構。
相關文章
- vue sync 修飾符Vue
- Vue的.sync修飾符的使用Vue
- Vue .sync修飾符與$emit(update:xxx)VueMIT
- iOS中assign和weak修飾符的區別iOS
- Vue - 按鍵修飾符 && 系統修飾符Vue
- vue 事件修飾符Vue事件
- solidity 引用型別修飾符memory、calldata與storage 常量修飾符Constant與Immutable區別Solid型別LDA
- vue3 模板編譯 —— 30 行程式碼實現 .sync 修飾符Vue編譯行程
- Vue事件修飾符詳解Vue事件
- c#.net中引數修飾符ref,out ,params得區別C#
- java中的修飾符Java
- final修飾和static final修飾的區別
- Java 修飾符Java 修飾符
- java修飾符Java
- Java中的native修飾符Java
- 關於Java中各種修飾符與訪問修飾符的說明 (轉)Java
- 繼承&修飾符繼承
- iOS __block修飾符iOSBloC
- Java 常用修飾符Java
- 訪問修飾符
- vue學習筆記7-事件修飾符Vue筆記事件
- 深入理解 Java 中 protected 修飾符Java
- Java中”失效”的private修飾符解析Java
- java中final修飾符的用法Java
- vue箭頭函式、js-for迴圈、事件修飾符、摁鍵事件和修飾符、表單控制、完整購物車版本Vue函式JS事件
- VUE3 之 多個 v-model 繫結及 v-model 修飾符的使用 - 這個系列的教程通俗易懂,適合新手Vue
- vue 基礎入門筆記 02:事件修飾符Vue筆記事件
- 開心檔之C++ 修飾符型別C++型別
- 探索 Solidity 中的各種修飾符Solid
- Java的static修飾符Java
- 許可權修飾符
- php 修飾符和魔術方法 (基礎)PHP
- Java中final修飾符都有什麼作用Java
- C#中const 和 readonly 修飾符的用法詳解C#
- TypeScript 類訪問修飾符TypeScript
- Java的訪問修飾符Java
- java修飾符使用指南Java
- python70 前端框架之vue js的集中迴圈方式、key值的解釋、input事件、v-model雙向資料繫結、過濾案例、事件修飾符、按鍵修飾符、表單控制Python前端框架VueJS事件