最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺析Vue中的Prop

 更新時(shí)間:2018年06月10日 09:40:02   作者:格子熊  
Prop的基本用法很簡(jiǎn)單,只需要在子組件的Vue實(shí)例中定義該屬性并把值設(shè)為目標(biāo)屬性的數(shù)組即可。這篇文章主要介紹了Vue中的Prop ,需要的朋友可以參考下

Prop

基本用法

Prop的基本用法很簡(jiǎn)單,只需要在子組件的Vue實(shí)例中定義該屬性并把值設(shè)為目標(biāo)屬性的數(shù)組即可

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

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

Prop中的靜態(tài)和動(dòng)態(tài)值

在正常情況下,一般在父組件中通過(guò)v-bind定義一個(gè)動(dòng)態(tài)值,子組件通過(guò)Prop接收該值,所以,很多人認(rèn)為,Prop只能接收動(dòng)態(tài)值。但是,其實(shí)Prop可以接受靜態(tài)屬性。

示例:

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

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

在示例中,父組件在子組件標(biāo)簽上定義了靜態(tài)屬性type,子組件依然通過(guò)Prop拿到了靜態(tài)屬性type。

單向數(shù)據(jù)流

所有的 prop 都使得其父子 prop 之間形成了一個(gè)單向下行綁定:父組件的 Prop 的更新會(huì)向下流動(dòng)到子組件中,但是反過(guò)來(lái)則不行。這樣會(huì)防止從子組件意外改變父組件以及同級(jí)子組件的狀態(tài),從而導(dǎo)致你的應(yīng)用的數(shù)據(jù)流向難以理解。

另外,每次父組件發(fā)生更新時(shí),子組件中所有的Prop都將刷新為最新的值。這意味著你不應(yīng)該在子組件內(nèi)部改變Prop,如果你這樣做了,Vue會(huì)在控制臺(tái)拋出一個(gè)警告。

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

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

非Prop特性

非Props特性是指在組件上定義了屬性,而又沒(méi)有使用Prop接受屬性。此時(shí),子組件內(nèi)不可使用該屬性值,該屬性會(huì)直接添加到子組件的根節(jié)點(diǎn)上。

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

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

Prop校驗(yàn)

子組件用Props接收父組件傳來(lái)的消息有多種形式:

1.數(shù)組形式

props: [data1, data2]

數(shù)組形式相當(dāng)于直接接收消息,不做任何校驗(yàn),一般來(lái)說(shuō),不太建議使用數(shù)組形式。

2.簡(jiǎn)單對(duì)象形式

props: {
 data1: String,
 data2: Array
}

簡(jiǎn)單對(duì)象形式對(duì)父組件傳遞的值進(jìn)行了類(lèi)型校驗(yàn),如果傳過(guò)來(lái)的值類(lèi)型不一致,控制臺(tái)會(huì)報(bào)錯(cuò)。

3.復(fù)雜對(duì)象形式

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

復(fù)雜對(duì)象形式的情況下,作為對(duì)象屬性的參數(shù)可以寫(xiě)為對(duì)象形式,參數(shù)對(duì)象含有4個(gè)屬性,type、required、default、validator。

type:設(shè)定參數(shù)類(lèi)型,當(dāng)傳入?yún)?shù)類(lèi)型與type不相符時(shí),控制臺(tái)會(huì)報(bào)錯(cuò)

required:設(shè)定參數(shù)是否是必傳,當(dāng)設(shè)為true時(shí),不傳該參數(shù)會(huì)報(bào)錯(cuò)

default:設(shè)定默認(rèn)值,當(dāng)參數(shù)類(lèi)型為復(fù)雜類(lèi)型時(shí),需使用工廠模式生成默認(rèn)值,否則Vue會(huì)在控制臺(tái)拋出警告。如圖所示,就通過(guò)工廠模式生成了一個(gè)長(zhǎng)度為3的空數(shù)組。

validator:校驗(yàn)器,是一個(gè)函數(shù),擁有一個(gè)代表傳入值的形參,可以自定義各種校驗(yàn),當(dāng)返回false時(shí),會(huì)報(bào)錯(cuò),表示沒(méi)通過(guò)校驗(yàn)。

相關(guān)文章

  • vue如何解決watch和methods值執(zhí)行順序問(wèn)題

    vue如何解決watch和methods值執(zhí)行順序問(wèn)題

    這篇文章主要介紹了vue如何解決watch和methods值執(zhí)行順序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 淺談Vue中的this.$store.state.xx.xx

    淺談Vue中的this.$store.state.xx.xx

    這篇文章主要介紹了Vue中的this.$store.state.xx.xx用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 優(yōu)雅的處理vue項(xiàng)目異常實(shí)戰(zhàn)記錄

    優(yōu)雅的處理vue項(xiàng)目異常實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅的處理vue項(xiàng)目異常的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • vue.js 使用axios實(shí)現(xiàn)下載功能的示例

    vue.js 使用axios實(shí)現(xiàn)下載功能的示例

    下面小編就為大家分享一篇vue.js 使用axios實(shí)現(xiàn)下載功能的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看
    2018-03-03
  • vue-element-admin搭建后臺(tái)管理系統(tǒng)的實(shí)現(xiàn)步驟

    vue-element-admin搭建后臺(tái)管理系統(tǒng)的實(shí)現(xiàn)步驟

    本文主要介紹了vue-element-admin搭建后臺(tái)管理系統(tǒng)的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Vue.js slot插槽的作用域插槽用法詳解

    Vue.js slot插槽的作用域插槽用法詳解

    這篇文章主要介紹了Vue.js slot插槽的作用域插槽用法詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Vue中事件總線(eventBus)的深入詳解及使用

    Vue中事件總線(eventBus)的深入詳解及使用

    在vue項(xiàng)目中父子組件間的通訊很方便,但兄弟組件或多層嵌套組件間的通訊,就會(huì)比較麻煩,這時(shí)使用eventBus通訊,就可以很便捷的解決這個(gè)問(wèn)題,這篇文章主要給大家介紹了關(guān)于Vue中事件總線(eventBus)使用的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • web項(xiàng)目開(kāi)發(fā)VUE的混入與繼承原理

    web項(xiàng)目開(kāi)發(fā)VUE的混入與繼承原理

    這篇文章主要介紹了web項(xiàng)目開(kāi)發(fā)中VUE的混入與繼承原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-09-09
  • vue 使用eventBus實(shí)現(xiàn)同級(jí)組件的通訊

    vue 使用eventBus實(shí)現(xiàn)同級(jí)組件的通訊

    這篇文章主要介紹了vue 使用eventBus實(shí)現(xiàn)同級(jí)組件的通訊,需要的朋友可以參考下
    2018-03-03
  • Vue中如何實(shí)現(xiàn)輪播圖的示例代碼

    Vue中如何實(shí)現(xiàn)輪播圖的示例代碼

    本篇文章主要介紹了Vue中如何實(shí)現(xiàn)輪播圖的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07

最新評(píng)論

五华县| 温泉县| 蓬莱市| 临湘市| 岐山县| 泉州市| 黄平县| 清徐县| 奉节县| 疏附县| 云南省| 舟山市| 漳浦县| 德州市| 苏尼特左旗| 房产| 兴仁县| 庆云县| 当雄县| 崇州市| 永仁县| 左权县| 方城县| 江山市| 柳江县| 台东市| 突泉县| 巴彦县| 莱西市| 阳春市| 瑞昌市| 运城市| 叙永县| 开阳县| 兴化市| 山阳县| 什邡市| 红安县| 蚌埠市| 万山特区| 资溪县|