vue3.0-props、computed、自定義事件方式
1. props驗證
1)props驗證
在封裝組件時對外界傳遞過來的props數(shù)據(jù)進行合法性的校驗,從而防止數(shù)據(jù)不合法的問題。
使用數(shù)組類型的props節(jié)點的缺點:無法為每個prop指定具體的數(shù)據(jù)類型。

2)對象類型的props節(jié)點
使用對象類型的props節(jié)點,可以對每個prop進行數(shù)據(jù)類型的校驗。

<template>
<h1>App</h1>
<my-count :count="count" :state="state"></my-count>
</template>
<script>
import MyCount from './Count.vue'
export default {
name: 'MyApp',
data() {
return {
count: 1,
state: true
}
},
components: {
MyCount
}
}
</script>3)props驗證
對象類型的props節(jié)點提供了多種數(shù)據(jù)驗證方案,例如:
- 基礎(chǔ)的類型檢查
- 多個可能的類型
- 必填項校驗
- 屬性默認(rèn)值
- 自定義驗證函數(shù)
①基礎(chǔ)的類型檢查
可以直接為數(shù)組的prop屬性制定基礎(chǔ)的校驗類型,從而防止組建的使用者為其綁定錯誤類型。

②多個可能的類型
如果某個prop屬性值的類型不一致,此時可以通過數(shù)組的形式,為其指定多個可能的類型,示例代碼如下:

③必填項校驗
如果組建的某個prop屬性是必填項,必須讓組建的使用者為其傳遞屬性的值,此時,可以通過如下的方式將其設(shè)置為必填項:

④屬性默認(rèn)值
在封裝組件時,可以為某個prop屬性指定默認(rèn)值。

⑤自定義驗證函數(shù)
在封裝組件時,可以為prop屬性指定自定義的驗證函數(shù),從而對prop屬性的值進行更加精確的控制。

2. 計算屬性
1)計算屬性
計算屬性本質(zhì)上就是一個function函數(shù),它可以實時監(jiān)聽data中數(shù)據(jù)的變化,并return一個計算后的新值,供組件渲染DOM時使用。
2)聲明計算屬性
計算屬性需要以function函數(shù)的形式聲明到組件的computed選項中。
計算屬性側(cè)重于得到一個計算的結(jié)果,因此計算屬性中必須有return返回值。

3)計算屬性的使用注意點
- 計算屬性必須定義在computed節(jié)點中
- 計算屬性必須是一個function函數(shù)
- 計算屬性必須有返回值
- 計算屬性必須當(dāng)做普通屬性使用
4)計算屬性和方法
相對于方法來說,計算屬性會緩存計算的結(jié)果,只有計算屬性的依賴項發(fā)生變化時,才會重新進行運算,因此相對來說計算屬性的性能更好。
<p>數(shù)量:{{ count }}乘以2的值為:{{ plus() }}</p>
<p>數(shù)量:{{ count }}乘以2的值為:{{ plus() }}</p>
methods: {
plus() {
console.log('方法被執(zhí)行了');
return this.count*2;
}
}
<p>數(shù)量:{{ count }}乘以2的值為:{{ plus }}</p>
<p>數(shù)量:{{ count }}乘以2的值為:{{ plus }}</p>
computed: {
plus() {
// 計算屬性會緩存計算的結(jié)果
console.log('計算屬性被執(zhí)行了');
return this.count*2;
}
} 
3. 自定義事件
1)自定義事件
在封裝組件時,為了讓組件的使用者可以監(jiān)聽到組件內(nèi)狀態(tài)的變化,此時需要用到組件的自定義事件。

2)自定義事件的3個使用步驟
在封裝組件時:
- 聲明自定義事件
- 觸發(fā)自定義事件
在使用組件時:
1.監(jiān)聽自定義事件
①聲明自定義事件
開發(fā)者為自定義組件封裝的自定義事件,必須是現(xiàn)在emits節(jié)點中聲明。

②觸發(fā)自定義事件
在emits節(jié)點下聲明的自定義事件,可以通過this.$emit('自定義事件的名稱')方法進行觸發(fā)。

③監(jiān)聽自定義事件
在使用自定義的組件時,可以通過v-on的形式監(jiān)聽自定義事件。

3)自定義事件傳參
在調(diào)用this.$emit()方法觸發(fā)自定義事件時,可以通過第2個參數(shù)為自定義事件傳參。

4. 組件上的v-model
1)在組件上使用v-model
v-model是雙向數(shù)據(jù)綁定指令,當(dāng)需要維護組件內(nèi)外數(shù)據(jù)的同步時,可以在組件上使用v-model指令。
- 外界數(shù)據(jù)的變化會自動同步到counter組件中
- counter組件中數(shù)據(jù)的變化,也會自動同步到外界

2)在組件上使用v-model的步驟

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue?中?Promise?的then方法異步使用及async/await?異步使用總結(jié)
then?方法是?Promise?中?處理的是異步調(diào)用,異步調(diào)用是非阻塞式的,在調(diào)用的時候并不知道它什么時候結(jié)束,也就不會等到他返回一個有效數(shù)據(jù)之后再進行下一步處理,這篇文章主要介紹了Vue?中?Promise?的then方法異步使用及async/await?異步使用總結(jié),需要的朋友可以參考下2023-01-01
基于Vue實現(xiàn)人民幣小寫轉(zhuǎn)為大寫功能
在金融類應(yīng)用中,經(jīng)常需要將金額從小寫數(shù)字轉(zhuǎn)換為大寫形式,這種轉(zhuǎn)換主要用于正式票據(jù)、合同等場合,以增加文本的專業(yè)性和可讀性,本文將詳細介紹如何在Vue.js項目中實現(xiàn)這一功能,并提供多個示例和詳細的代碼說明,需要的朋友可以參考下2024-09-09
Vue+Elementui el-tree樹只能選擇子節(jié)點并且支持檢索功能
這篇文章給大家介紹了Vue+Element UI el-tree樹只能選擇子節(jié)點并且支持檢索的文章,通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-12-12
vue?eslint報錯:Component?name?“xxxxx“?should?always?be?
新手在使用腳手架時總會報各種錯,下面這篇文章主要給大家介紹了關(guān)于vue?eslint報錯:Component?name?“xxxxx“?should?always?be?multi-word.eslintvue的4種解決方案,需要的朋友可以參考下2022-07-07
vue中內(nèi)網(wǎng)/局域網(wǎng)/離線的情況下使用及建立項目方式
這篇文章主要介紹了vue中內(nèi)網(wǎng)/局域網(wǎng)/離線的情況下使用及建立項目方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
vue中v-if?和v-permission?共同使用的坑及解決方案
這篇文章主要介紹了vue中v-if?和v-permission?共同使用的坑及解決方案的相關(guān)資料,需要的朋友可以參考下2023-07-07

