詳細聊聊vue中組件的props屬性
今天這篇文章,讓你徹底學會props屬性……
props主要用于組件的傳值,他的工作就是為了接收外面?zhèn)鬟^來的數(shù)據(jù),與data、el、ref是一個級別的配置項。
問題一:那props具體是怎么使用呢?原理又是什么呢?往下看
1、【定義被調(diào)用組件】首先,我們先定義一個person組件,用于顯示個人信息的組件,我們放了一個人的姓名,性別,以及年齡,定義好這個組件之后,就可以等待其他組件進行調(diào)用。那么既然別的組件可以調(diào)用,我們就需要再定義一個props屬性,用于接收別的組件傳進來的值。
注意:組件中name、sex、age都是一個prop,將三個屬性放到一起,就是props,這就是props的由來,是prop的復數(shù)形式,代表多個prop屬性的集合。
2、【調(diào)用組件】此時我們再定義一個info組件,用于展示這個人的基本信息,進行對person組價的調(diào)用實現(xiàn)信息的展示,分為下圖四個步驟進行調(diào)用。并傳入?yún)?shù)
3、【看效果】傳入成功。
問題二:那如果我們想給年齡加1歲,怎么實現(xiàn)?
我們可能會直接這樣加1
看效果是否能實現(xiàn),變成19,看下圖顯然是不正確的。因為你傳入的年齡是個字符串18,所以加1只會在18后面進行拼接。
然后有的人說,那傳數(shù)字,怎么傳數(shù)字呢?很簡單,一個符號搞定。
我們只需要在age前面加上冒號 :他就會只識別雙引號里面的東西18 ,否則識別的是雙引號18
看下效果,此時就成功了。
問題三:對于年齡這一類型,我們最希望拿到的是什么數(shù)據(jù)類型?
肯定是數(shù)字類型,但是有人非要傳字符串類型,就會影響我們對年齡的計算,比如上面的加1……那么我們?nèi)绾蜗拗祁愋湍兀?/strong>
這時候props不能再用[]去定義,需要用{},因為限制類型時,props就是作為一個對象去使用;
下面就是我們將三個屬性分別做了限制。
我們把年齡做了number類型限制后,再傳入字符串18,看有什么變化?
此時發(fā)現(xiàn)控制臺,會報錯,顯示age的數(shù)據(jù)類型不匹配。
雖然不影響展示,但是會報錯。這可以給我們提供一個明確的提示。方便我們規(guī)范的傳入數(shù)據(jù)。
問題四:可以限制類型,那是不是也可以限制是否必傳呢?
答:當然可以。
假設姓名必傳,其他非必傳。
類型屬性:type:xx
必傳屬性:required:true
默認屬性:default:xx
name必傳,那么我們不傳試試,年齡不傳默認18
結(jié)果,控制臺同樣報錯,提示,name是必傳屬性。年齡我們沒傳,也成功展示的是默認值,19是因為一開始對年齡進行了加1操作,這樣我們就成功對屬性進行了限制。
對以上總結(jié):
props在接收數(shù)據(jù)的同時,對數(shù)據(jù)進行了類型限制+默認值的指定+必要性的限制
問題五:props接收的屬性值可以修改嗎?
答:不可以
我們添加一個button,以及點擊事件
注意:我們要訪問props里面的屬性值,通過this.即可找到
查看結(jié)果,發(fā)現(xiàn)頁面可以顯示,但是控制臺報錯,因此它是不可修改的
問題六:必須要修改props屬性值,怎么辦?
答:通過data去間接修改
我們在data里面重新定義一個變量去接收props屬性。這個變量最好不要重名,重名的話,優(yōu)先獲取props屬性值,優(yōu)先級props>data。然后我們在操作或者html綁定值的時候,都去操作data里面新定義的變量
此時可以看到,修改成功,也沒有報錯:
總結(jié):配置項props
-------讓組件接收外部傳來的數(shù)據(jù)
接收數(shù)據(jù)三種方式:
(1)只接收:props: ['name','age','sex']
(2)接收并限制類型:props: { "name":Number }
(3)限制類型、限制必要性指定默認值:
props:{ "name":{ type:String, required:true }, "age":{ type:Number, default:18 }, "sex":{ type:String, default:'男' }, },
注意:props是只讀的,vue底層會檢測你對props的修改,如果進行了修改,控制臺會報錯,必須修改,就復制一份到data中,通過data去修改數(shù)據(jù)。
到此這篇關(guān)于vue中組件的props屬性的文章就介紹到這了,更多相關(guān)vue組件的props屬性內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue基礎(chǔ)之MVVM,模板語法和數(shù)據(jù)綁定
這篇文章主要為大家介紹了Vue之MVVM,模板語法和數(shù)據(jù)綁定,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12vue+elementUI動態(tài)增加表單項并添加驗證的代碼詳解
這篇文章主要介紹了vue+elementUI動態(tài)增加表單項并添加驗證的代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12vue?cli+axios踩坑記錄+攔截器使用方式,代理跨域proxy
這篇文章主要介紹了vue?cli+axios踩坑記錄+攔截器使用方式,代理跨域proxy,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04