国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

深入淺析Vue中的Prop

2024-05-06 15:33:30
字體:
來源:轉載
供稿:網友

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: () => ['', '', ''] }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 萨嘎县| 长海县| 栾城县| 黑龙江省| 利川市| 浙江省| 特克斯县| 巴彦淖尔市| 长岛县| 文成县| 乐安县| 海丰县| 永吉县| 北海市| 贡山| 杭锦后旗| 庆城县| 门头沟区| 鱼台县| 邓州市| 涡阳县| 湖州市| 博野县| 巫溪县| 临潭县| 古丈县| 蓝山县| 保靖县| 隆安县| 麦盖提县| 湘乡市| 林芝县| 永平县| 灵石县| 崇信县| 延庆县| 江华| 新泰市| 甘洛县| 高平市| 马龙县|