Vue的props配置項(xiàng)詳解
簡(jiǎn)介
主要介紹props配置項(xiàng)的概念,使用等。
props的作用是用來(lái)接收父組件中傳過(guò)來(lái)的數(shù)據(jù)。
編寫(xiě)步驟有兩個(gè):
- 子組件使用props配置項(xiàng)進(jìn)行屬性的接收。
- 父組件使用子組件時(shí)以組件標(biāo)簽屬性的形式進(jìn)行數(shù)據(jù)的傳遞。
子組件使用props配置項(xiàng)進(jìn)行屬性的接收的形式有三種:
第一種:簡(jiǎn)單模式。
main.js:
//引入vue依賴 import Vue from 'vue' //引入組件App import App from './App.vue' // 關(guān)閉生產(chǎn)提示 Vue.config.productionTip = false //創(chuàng)建一個(gè)vue實(shí)例 new Vue({ //這個(gè)目前還沒(méi)學(xué)過(guò),先知道他的作用是將app放入容器中。 render: h => h(App), //配置該vue實(shí)例管理id為app的容器 }).$mount('#app')
App.vue:
<template> <!-- 編寫(xiě)結(jié)構(gòu) --> <div> <!-- 父組件編寫(xiě)組件標(biāo)簽時(shí),將數(shù)據(jù)以屬性的方式進(jìn)行傳遞。 --> <student studentName="Yehaocong" studentAge="25"></student> <student studentName="Liaoxiaoyan" studentAge="21"></student> </div> </template> <script> import student from "./components/Student.vue" export default { components:{ //注冊(cè)組件 student } } </script> <style> </style>
Student.vue:
<template> <!-- 編寫(xiě)組件結(jié)構(gòu)代碼,也就是html代碼 --> <!-- 需要一個(gè)div括住,也就是只能有一個(gè)根元素,一般使用div --> <div class="orange"> <div>學(xué)生姓名:{{studentName}}</div> <div>年齡:{{studentAge}}</div> </div> </template> <script> //交互代碼編寫(xiě)的地方,需要暴露出去給其他地方引入 //這個(gè)需要有一點(diǎn)es6模塊化的知識(shí),這里一般使用默認(rèn)暴露,因?yàn)檫@是單文件組件,只需要暴露一個(gè)組件對(duì)象, //并且引入默認(rèn)暴露的組件引入語(yǔ)法比較簡(jiǎn)單。 export default { data() { return { } }, //簡(jiǎn)便寫(xiě)法,用于接收父組件傳遞過(guò)來(lái)的數(shù)據(jù) //數(shù)組形式,里面聲明屬性名稱(chēng)即可 props:["studentName","studentAge"], } </script> <style> /* 編寫(xiě)樣式的地方 */ .orange{ background-color: orange; } </style>
效果:可以看到數(shù)據(jù)以正確顯示。
但是以上由一個(gè)文件,就是父組件進(jìn)行數(shù)據(jù)的傳遞,是以普通屬性的方式進(jìn)行傳遞的,這樣會(huì)導(dǎo)致傳遞的所有屬性的值的類(lèi)型都是字符串。
例子:
將年齡默認(rèn)是傳遞過(guò)來(lái)加一。
效果:
所以不能使用普通的屬性傳遞,需要借助v-bind指令進(jìn)行綁定屬性值,如果使用v-bind進(jìn)行屬性的綁定,會(huì)返回表達(dá)式返回的值,所以可以控制屬性值的類(lèi)型。
效果:
如果使用v-bind屬性綁定的形式進(jìn)行屬性傳遞,還可以傳遞數(shù)組、對(duì)象類(lèi)型的數(shù)據(jù)。
效果:
第二種方式可以限制數(shù)據(jù)的類(lèi)型:
故意將年齡屬性設(shè)置為字符串。
效果:書(shū)名這種限制只是一個(gè)控制臺(tái)的警告,實(shí)際不影響展示。
第三種方式:可以限制類(lèi)型,可以設(shè)置默認(rèn)值,可以設(shè)置是否必須。
傳遞時(shí),第二個(gè)標(biāo)簽不傳遞年齡,來(lái)測(cè)試默認(rèn)值,第一個(gè)標(biāo)簽不傳遞名字,以測(cè)試必須。
效果:
可以發(fā)現(xiàn),里面的限制,僅僅會(huì)發(fā)出控制臺(tái)警告,但是不影響使用。
props的熟悉是只讀的,如果修改,會(huì)控制臺(tái)警告,但是還是會(huì)修改成功的,只是會(huì)警告一下。
效果:
如果實(shí)際業(yè)務(wù)需求需要更改props屬性,那么可以復(fù)制一份props的內(nèi)容到data,然后修改data中的數(shù)據(jù)。
效果:
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
vuejs實(shí)現(xiàn)折疊面板展開(kāi)收縮動(dòng)畫(huà)效果
這篇文章主要介紹了vuejs實(shí)現(xiàn)折疊面板展開(kāi)收縮動(dòng)畫(huà)效果,文中通過(guò)代碼給大家分享兩種情況介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09詳解auto-vue-file:一個(gè)自動(dòng)創(chuàng)建vue組件的包
這篇文章主要介紹了auto-vue-file:一個(gè)自動(dòng)創(chuàng)建vue組件的包,需要的朋友可以參考下2019-04-04Vue項(xiàng)目打包部署的實(shí)戰(zhàn)過(guò)程記錄
我們使用nginx部署Vue項(xiàng)目,實(shí)質(zhì)上就是將Vue項(xiàng)目打包后的內(nèi)容同步到nginx指向的文件夾,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目打包部署的相關(guān)資料,需要的朋友可以參考下2021-09-09vue3.0中的雙向數(shù)據(jù)綁定方法及優(yōu)缺點(diǎn)
這篇文章主要介紹了vue3.0中的雙向數(shù)據(jù)綁定方法 ,文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08vue中使用heatmapjs的示例代碼(結(jié)合百度地圖)
這篇文章主要介紹了vue中使用heatmapjs的示例代碼(結(jié)合百度地圖),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Vue?el-table實(shí)現(xiàn)右鍵菜單功能
這篇文章主要為大家詳細(xì)介紹了Vue?el-table實(shí)現(xiàn)右鍵菜單功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04