vue中插槽(slot)幾種類型的使用方法
前言
vue的slot主要分三種,默認(rèn)插槽,具名插槽,作用域插槽;使用插槽是在存在父子關(guān)系的組件中使用,我們可以在子組件中決定插槽的位置,同時(shí)子組件也可以給這些插槽的默認(rèn)信息,當(dāng)父組件中沒有需要給子組件插槽插入信息時(shí),顯示的是子組件插槽定義的默認(rèn)信息,下邊簡(jiǎn)單說(shuō)下vue這三種插槽如何使用。
準(zhǔn)備工作
很簡(jiǎn)單,就創(chuàng)建父組件testSlot.vue,子組件children.vue,并在testSlot組件中注冊(cè)引入children組件。
一 默認(rèn)插槽的使用:
默認(rèn)插槽:
在子組件中定義一個(gè)默認(rèn)插槽:
在開發(fā)中我們經(jīng)常使用到組件之間的傳值,但很多情況涉及到的都是數(shù)據(jù)屬性的傳值,比如父組件將msg傳給子組件:
現(xiàn)在如果是這種情況:
如果子組件中沒有使用插槽的情況下:
瀏覽器中的頁(yè)面,父組件中的p標(biāo)簽的內(nèi)容是不會(huì)還給子組件的:
這時(shí)候,想讓父組件定義的p標(biāo)簽傳給子組件并顯示,可以在子組件中定義一個(gè)默認(rèn)插槽:
在子組件中,你也可以定義多個(gè)默認(rèn)插槽,并在子組件中決定這些默認(rèn)插槽的位置,父組件要插入的內(nèi)容,都會(huì)被填充到這些默認(rèn)的插槽中:
當(dāng)然,父組件定義要插入到子組件的插槽的內(nèi)容,并不一定只有是dom結(jié)構(gòu)類型的,也可以是一個(gè)組件,也可以是普通的數(shù)據(jù)結(jié)構(gòu),只要子組件有定義插槽,就會(huì)把內(nèi)容填充進(jìn)去。
二 具名插槽的使用:
具名插槽:
vue 2.6.0 版本使用具名插槽和作用域插槽有了新的統(tǒng)一語(yǔ)法,使用v-slot替換了之前的slot和slot-scope
什么叫具名插槽?
其實(shí)就是在子組件中定義插槽時(shí),給對(duì)應(yīng)的插槽分別起個(gè)名字,方便后邊插入父組件將內(nèi)容根據(jù)name來(lái)填充對(duì)應(yīng)的內(nèi)容。
子組件中,定義兩個(gè)具名插槽:
父組件中:
為了驗(yàn)證,子組件中的插槽可以填充任何結(jié)構(gòu)的內(nèi)容,所以我這邊專門在one_slot插槽中插入一個(gè)組件,而在two插槽就單純插入一串普通的數(shù)據(jù)
頁(yè)面結(jié)果:
當(dāng)然,子組件可以定義多個(gè)同名的具名插槽:
三 作用域插槽:
作用域插槽:<slot :自定義name=data中的屬性或?qū)ο?gt;
通過上邊的默認(rèn)插槽和具名插槽的使用過程中,發(fā)現(xiàn),基本都是父組件中決定要插入到子組件中的內(nèi)容,而子組件自行決定插槽的位置。
具名插槽,就是實(shí)現(xiàn)在子組件中自行決定自己要顯示什么內(nèi)容。
子組件:
父組件:
這種時(shí)候有一種情況需要注意:
如果子組件中只有一個(gè)作用域插槽時(shí),父組件可以使用下邊這種簡(jiǎn)單的寫法,當(dāng)然規(guī)范點(diǎn)還是加上template模板標(biāo)簽好點(diǎn):
頁(yè)面效果:
但是當(dāng)子組件中有多個(gè)作用域插槽時(shí),不建議上邊這種簡(jiǎn)單的寫法,因?yàn)榭赡軙?huì)出現(xiàn)作用域不明確的問題。
子組件有多個(gè)作用域插槽時(shí):
父組件使用這種規(guī)范的寫法,可以避免有時(shí)作用域不明確問題:
到此這篇關(guān)于vue中插槽(slot)幾種類型的使用方法的文章就介紹到這了,更多相關(guān)vue 插槽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Vue2.0 watch對(duì)象屬性變化監(jiān)聽不到的問題
今天小編就為大家分享一篇解決Vue2.0 watch對(duì)象屬性變化監(jiān)聽不到的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-09-09vue-router項(xiàng)目實(shí)戰(zhàn)總結(jié)篇
vue-router 是 Vue.js 官方的路由庫(kù).這篇文章主要介紹了vue-router項(xiàng)目實(shí)戰(zhàn)總結(jié),需要的朋友可以參考下2018-02-02Vue.js實(shí)現(xiàn)一個(gè)自定義分頁(yè)組件vue-paginaiton
這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)一個(gè)自定義分頁(yè)組件vue-paginaiton的具體代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09解決vue.js在編寫過程中出現(xiàn)空格不規(guī)范報(bào)錯(cuò)的問題
下面小編就為大家?guī)?lái)一篇解決vue.js在編寫過程中出現(xiàn)空格不規(guī)范報(bào)錯(cuò)的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-09-09Vue3項(xiàng)目實(shí)現(xiàn)前端導(dǎo)出Excel的示例代碼
這篇文章主要介紹了Vue3項(xiàng)目實(shí)現(xiàn)前端導(dǎo)出Excel的示例,在vue3的項(xiàng)目中導(dǎo)出Excel表格的功能,可以借助xlsx庫(kù)來(lái)實(shí)現(xiàn),下面是詳細(xì)的操作步驟,需要的朋友可以參考下2025-01-01