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

溫馨提示×

溫馨提示×

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

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

Vue中Prop的作用有哪些

發布時間:2021-01-16 10:58:02 來源:億速云 閱讀:963 作者:Leah 欄目:web開發

Vue中Prop的作用有哪些?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Prop

基本用法

Prop的基本用法很簡單,只需要在子組件的Vue實例中定義該屬性并把值設為目標屬性的數組即可

Vue.component('child', {
 ...
 // 接收message
 props: ['message']
 ...
})

tips:由于HTML中的屬性是不區分大小寫的,所以當使用DOM中的模板(HTML中)時,駝峰寫法需要轉化為短橫線寫法。但是,如果使用字符串模板(JS中)時,不受限制,可以為所欲為。

Prop中的靜態和動態值

在正常情況下,一般在父組件中通過v-bind定義一個動態值,子組件通過Prop接收該值,所以,很多人認為,Prop只能接收動態值。但是,其實Prop可以接受靜態屬性。

示例:

/* 父組件 */
<child type="video"></child>

/* 子組件 */
Vue.component('child', {
 ...
 // 成功接收
 props: ['type']
 ...
})

在示例中,父組件在子組件標簽上定義了靜態屬性type,子組件依然通過Prop拿到了靜態屬性type。

單向數據流

所有的 prop 都使得其父子 prop 之間形成了一個單向下行綁定:父組件的 Prop 的更新會向下流動到子組件中,但是反過來則不行。這樣會防止從子組件意外改變父組件以及同級子組件的狀態,從而導致你的應用的數據流向難以理解。

另外,每次父組件發生更新時,子組件中所有的Prop都將刷新為最新的值。這意味著你不應該在子組件內部改變Prop,如果你這樣做了,Vue會在控制臺拋出一個警告。

一般來說,如果子組件需要操作Prop中的值,需要將Prop中的值賦值給本地定義的屬性:

...
props: ['message'],
data () {
 return {
  mes: this.message
 }
}
...

非Prop特性

非Props特性是指在組件上定義了屬性,而又沒有使用Prop接受屬性。此時,子組件內不可使用該屬性值,該屬性會直接添加到子組件的根節點上。

比如,在一個只含有一個div的子組件上,如果我向子組件傳了一個content屬性,但是子組件不使用Prop接收content屬性,則渲染結果為:

<div id="root">
  <div content="hello"></div>
</div>

Prop校驗

子組件用Props接收父組件傳來的消息有多種形式:

1.數組形式

props: [data1, data2]

數組形式相當于直接接收消息,不做任何校驗,一般來說,不太建議使用數組形式。

2.簡單對象形式

props: {
 data1: String,
 data2: Array
}

簡單對象形式對父組件傳遞的值進行了類型校驗,如果傳過來的值類型不一致,控制臺會報錯。

3.復雜對象形式

props: {
 data1: {
  type: String,
  required: true,
  default: 'default value',
  validator (value) {
   return (value.length < 5)
  }
 },
 data2: {
  type: Array,
  required: true,
  default: () => ['', '', '']
 }
}

復雜對象形式的情況下,作為對象屬性的參數可以寫為對象形式,參數對象含有4個屬性,type、required、default、validator。

type:設定參數類型,當傳入參數類型與type不相符時,控制臺會報錯

required:設定參數是否是必傳,當設為true時,不傳該參數會報錯

default:設定默認值,當參數類型為復雜類型時,需使用工廠模式生成默認值,否則Vue會在控制臺拋出警告。如圖所示,就通過工廠模式生成了一個長度為3的空數組。

validator:校驗器,是一個函數,擁有一個代表傳入值的形參,可以自定義各種校驗,當返回false時,會報錯,表示沒通過校驗。

關于Vue中Prop的作用有哪些問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

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

AI

彩票| 察隅县| 包头市| 西城区| 克拉玛依市| 乐平市| 个旧市| 湖口县| 广丰县| 达拉特旗| 庆安县| 鹤岗市| 静海县| 罗甸县| 仙居县| 林芝县| 和林格尔县| 苍梧县| 彩票| 分宜县| 乳山市| 屏东县| 通许县| 金沙县| 贵德县| 邢台市| 呼伦贝尔市| 竹溪县| 武宁县| 芜湖县| 平遥县| 贵南县| 来宾市| 衡南县| 洛宁县| 灵丘县| 台南市| 蒙山县| 衢州市| 红河县| 兴安盟|