props/$emit元件通訊及語法糖的使用
阿新 • • 發佈:2021-11-06
props/$emit
子元件想要顯示父元件的資料,就props
。 子元件想要改變父元件的資料,就$emit
。
v-model語法糖
- v-model是 屬性value 和 事件input 的語法糖。
- 適用於:觸發事件返回的值 正是 屬性要改的值,一般是單一屬性。比如觸發事件返回的值正好就是該屬性的新值;
- 適用於:表單類的元件,因為屬性和事件預設是
value
和input
.sync語法糖
- .sync語法糖預設是 屬性xxx 和 事件update:xxx
- 適用於觸發事件返回的值 正是 屬性要改的值,一般是單一屬性
- 適用於:非表單類的元件
v-modal:xxx語法糖
- vue3新增,取代了.sync語法糖
- 父元件的變化:
原生寫法:父元件監聽update:checked事件並接收子元件傳入的值 <custom-checkbox :checked="selectFramework" @update:checked="selectFramework = $event"></custom-checkbox> .sync語法糖寫法:其中的prop屬性為checked,event事件為update:checked <custom-checkbox :checked.sync="selectFramework"></custom-checkbox> v-model:xxx語法糖寫法:prop屬性為checked,event事件為update:checked <custom-checkbox v-model:checked="selectFramework"></custom-checkbox>
- 子元件沒有變化,仍然是
props
接收父元件傳入的屬性值,通過$emit
觸發事件返回屬性的值。
總結
props/$emit
是父子元件最常用的通訊方式,而v-model
、.sync
只是其語法糖- vue3後都開始使用
v-modal:xxx
語法糖; - 語法糖的缺點是子元件只是單一的修改某個父元件值,複雜邏輯還是老實用
props/$emit
- 其實語法糖只是在父元件用的時候更加方便,而子元件該咋樣還是咋樣。