92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

Vue2 插槽的使用【默認插槽、具名插槽、作用域插槽】

2023-1-12    前端達人

一:什么是插槽

       例如老板要讓你使用組件寫分類欄,然后使用該組件生成兩個分類欄,這兩個分類欄里的數據都不一樣,但是整體結構是一樣的,這就要求組件的結構一樣,但是內部 DOM 結構是由使用組件的時候決定的,這就需要插槽,其就像放在組件中的占位標簽,使用組件時我們將要放到占位標簽處的DOM結構寫入組件標簽體中即可。

       例如如下圖例子,第一個分類框我們要展示熱門電影,第二個分類框我們要展示一張風景圖,整體的框架是一樣的,只是其內部填充的東西不一樣下面會做出更深刻的理解。


二:默認插槽 

2.1 默認插槽說明

      此板塊我們講述第一個插槽:默認插槽。之前我們使用組件的時候,引入進 App.vue 后注冊就可以采用 自閉合 與  完整組件標簽 的方式使用,以下就是常采用的自閉合與完整組件標簽方式(以 test組件為例)


    
  1. <template>
  2. <test/> //自閉合方式
  3. <test></test> //完整組件標簽的方式
  4. </template>

         但是插槽的使用我們就要把要放在插槽中的內容寫在組件標簽體內,例如我們要在插槽中放入一個 ul 列表,那么我們使用組件時就要這樣書寫:


    
  1. <template>
  2. <test> //組件標簽
  3. <ul>
  4. <li></li>
  5. <li></li>
  6. <li></li>
  7. </ul>
  8. </test>
  9. </template>

       接下來說說默認插槽的寫法,如果我們只在使用組件時的組件標簽體內寫上內容,那頁面上是顯示不出來任何東西的,這是因為標簽體內的內容確實被解析了,但是vue不知道要把這些東西放在組件中 template 的哪個位置,故我們要在組件的 template 中設置一個插槽來占位,以保證使用組件時其解析的內容可以放入占的位置中去。占位我們使用一個很重要的標簽 ------ slot,我們需要在組件的 template 中這樣書寫:


    
  1. <template>
  2. <div>
  3. <span>我是一個組件,下面是我的插槽內容</span>
  4. <slot></slot> //默認插槽
  5. </div>
  6. </template>

這樣使用組件時組件標簽體中的內容就可以放入組件的默認插槽中了

2.2 默認插槽使用 

       我們來實現一下上述的分類案例,讓第一個分類展示電影,第二個分類放一張圖片進去,但整體組件結構一樣

 classify.vue組件:


  1. <template>
  2. <div class="classify-box">
  3. <div class="title">{{name}}</div>
  4. <slot></slot> //slot設置默認插槽來占位
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. name:'Classify',
  10. data() {
  11. return {
  12. }
  13. },
  14. props:['name'] //propos接收傳來的標題名稱
  15. }
  16. </script>
  17. <style scoped>
  18. //css太占地方就刪掉了
  19. </style>

App.vue組件:


  1. <template>
  2. <div class="app-box">
  3. <Classify name='熱門電影'> //使用組件并在組件標簽體中書寫要放進插槽中的內容
  4. <ul>
  5. <li>肖申克的救贖</li>
  6. <li>1912</li>
  7. <li>零的執行人</li>
  8. </ul>
  9. </Classify>
  10. <Classify name="風景">
  11. <img src="./img/QQ圖片20220818163031.jpg" alt="">
  12. </Classify>
  13. </div>
  14. </template>
  15. <script>
  16. import Classify from './components/classify.vue' //引入組件
  17. export default {
  18. name: 'App',
  19. data() {
  20. return {
  21. }
  22. },
  23. components: {
  24. Classify:Classify //注冊組件
  25. }
  26. }
  27. </script>
  28. <style scoped>
  29. //css太占位置刪掉了
  30. </style>

這樣就可以實現一個最基本的默認插槽案例了 


三:具名插槽 

3.1 具名插槽說明

       具名插槽其實只是在默認插槽的基礎上給每個插槽起了名字,作用為可以在組件中設置多個插槽,可以更具體細分。首先給組件插槽起名字,使用 name="xxx"


    
  1. <template>
  2. <div>
  3. <span>我是一個組件,下面是我的多個具名插槽內容</span>
  4. <slot name="header"></slot> //header具名插槽
  5. <slot name="body"></slot> //body具名插槽
  6. <slot name="footer"></slot> //footer具名插槽
  7. </div>
  8. </template>

        上面就在組件中定義好了三個具名插槽,下面我們來看使用插槽的寫法,依舊是在使用組件標簽時在標簽體內寫入內容,但是要注意要使用 slot="xxx" 寫在組件標簽體外層盒子上來指明放入哪個插槽中


    
  1. <template>
  2. <div class="app-box">
  3. <Classify>
  4. <div slot="header"> //放入header插槽
  5. <span>我在header插槽中</span>
  6. </div>
  7. <div slot="body"> //放入body插槽
  8. <span>我在body插槽中</span>
  9. </div>
  10. <div slot="footer"> //放入footer插槽
  11. <span>我在footer插槽中</span>
  12. </div>
  13. </Classify>
  14. </div>
  15. </template>

       上面的寫法其實并不完善,slot寫在每個指定插槽的外層大盒子 div 上了,這樣會給其增加一層 DOM 結構,我們最好把 div 換成 template 標簽,因為 template 標簽不會被解析,結構更清晰不多余。

3.2 具名插槽使用

下面簡單實現一下具名插槽的使用

 classify.vue組件:


  1. <template>
  2. <div class="classify-box">
  3. <div class="title">下面是具名插槽的內容</div>
  4. <slot name="header"></slot>
  5. <slot name="body"></slot>
  6. <slot name="footer"></slot>
  7. </div>
  8. </template>
  9. <script>
  10. export default {
  11. name:'Classify',
  12. data() {
  13. return {
  14. }
  15. },
  16. }
  17. </script>
  18. <style scoped>
  19. </style>

App.vue組件:


  1. <template>
  2. <div class="app-box">
  3. <Classify>
  4. <div slot="header">
  5. <span>我在header插槽中</span>
  6. </div>
  7. <div slot="body">
  8. <span>我在body插槽中</span>
  9. </div>
  10. <div slot="footer">
  11. <span>我在footer插槽中</span>
  12. </div>
  13. </Classify>
  14. </div>
  15. </template>
  16. <script>
  17. import Classify from './components/classify.vue'
  18. export default {
  19. name: 'App',
  20. data() {
  21. return {
  22. }
  23. },
  24. components: {
  25. Classify:Classify
  26. }
  27. }
  28. </script>
  29. <style scoped>
  30. </style>

這樣就簡單實現了具名插槽 


四:作用域插槽 

4.1 作用域插槽說明

       作用域插槽較難理解,但其簡單解釋就是帶有數據的插槽,把組件中的數據綁定給插槽,然后誰使用這個組件誰就能拿到這個數據使用,也相當于一種數據通信,其需要這樣把數據綁定定義給組件插槽(名稱沒有要求)


    
  1. <template>
  2. <div class="classify-box">
  3. <div class="title">下面是作用域插槽的內容</div>
  4. <slot :hobby="hobby"></slot> //將數據綁定給組件插槽
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. name:'Classify',
  10. data() {
  11. return {
  12. hobby:['打游戲','睡大覺','吃大餐'] //要綁定的數據
  13. }
  14. },
  15. }
  16. </script>

然后就要使用組件時使用 slot-scope="xxx" 去接收,或者直接使用 scope,要注意的是此處標準一點最好寫在 template 中,這里的 xxx 不需要和組件插槽中起的名字一樣,隨便起就行。然后我們打印一下接收到的數據看看其是什么


    
  1. <template>
  2. <div class="app-box">
  3. <Classify>
  4. <template slot-scope="datas">
  5. <div>{{datas}}</div>
  6. </template>
  7. </Classify>
  8. </div>
  9. </template>

       可以看到我們接受到了一個對象,對象中包含的是你插槽中綁定的所有數據(我們只綁定了一個所以對象里只有一組數據),對此我們就能在組件標簽體中使用得到的數據了

 

4.2 作用域插槽使用

下面簡單實現一下作用域插槽的使用

 classify.vue組件:


  1. <template>
  2. <div class="classify-box">
  3. <div class="title">下面是作用域插槽的內容</div>
  4. <slot :hobby="hobby"></slot>
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. name:'Classify',
  10. data() {
  11. return {
  12. hobby:['打游戲','睡大覺','吃大餐']
  13. }
  14. },
  15. }
  16. </script>
  17. <style scoped>
  18. </style>

App.vue組件:

此處 slot-scope 接收的數據使用了es6解構把數據解構出來了


  1. <template>
  2. <div class="app-box">
  3. <Classify>
  4. <template slot-scope="{hobby}">
  5. <ul>
  6. <li v-for="(h,index) in hobby" :key="index">{{h}}</li>
  7. </ul>
  8. </template>
  9. </Classify>
  10. </div>
  11. </template>
  12. <script>
  13. import Classify from './components/classify.vue'
  14. export default {
  15. name: 'App',
  16. data() {
  17. return {
  18. }
  19. },
  20. components: {
  21. Classify:Classify
  22. }
  23. }
  24. </script>
  25. <style scoped>
  26. </style>

這樣就簡單實現了作用域插槽的案例

 感謝支持'


 來源:csdn

藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請加微信ban_lanlan,報下信息,藍小助會請您入群。歡迎您加入噢~~
希望得到建議咨詢、商務合作,也請與我們聯系01063334945。 

分享此文一切功德,皆悉回向給文章原作者及眾讀者. 免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。 

藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務UI設計公司、界面設計公司、UI設計服務公司、數據可視化設計公司、UI交互設計公司、高端網站設計公司、UI咨詢、用戶體驗公司、軟件界面設計公司

日歷

鏈接

個人資料

藍藍設計的小編 http://www.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
亚洲免费一在线| 亚洲欧洲在线播放| 亚洲人精品午夜在线观看| 欧美一级大胆视频| 国产精品大片wwwwww| 日韩电影免费在线观看| 色综合伊人色综合网| 欧美视频裸体精品| 欧美日韩亚洲网| 91产国在线观看动作片喷水| 亚洲国产精品网站| 日韩欧美在线网址| 久久久在线免费观看| 日本成熟性欧美| 欧美性生交大片免费| 久久综合久久八八| 91高清免费视频| 国产精品久久久久影院日本| 亚洲国产三级网| 高清视频欧美一级| 国产精品视频久久久| 羞羞色国产精品| 777午夜精品福利在线观看| 日本欧美国产在线| 国产精品jvid在线观看蜜臀| 亚洲美女久久久| 国产精品激情av电影在线观看| 亚洲精品videossex少妇| 国产一区二区在线免费视频| 日韩在线观看精品| 国产精品久久久久久超碰| 久久影院在线观看| 91精品中国老女人| 日韩精品日韩在线观看| 中文字幕日韩电影| 成人有码在线视频| 国产精品电影网| 97在线视频免费| 国产精品福利网| 国产一区二区黑人欧美xxxx| 秋霞av国产精品一区| 久久精品久久精品亚洲人| 亚洲欧美日韩综合| 欧美亚洲日本黄色| 亚洲欧美激情视频| 日韩欧美国产一区二区| 亚洲一级免费视频| 9.1国产丝袜在线观看| 欧美在线免费看| 成人国产精品久久久久久亚洲| 久久人人爽人人爽人人片亚洲| 亚洲欧美日韩在线高清直播| 亚洲美女久久久| 成人性生交大片免费看小说| 97在线免费观看视频| 91九色视频在线| 亚洲欧美成人网| 午夜精品美女自拍福到在线| 亚洲精品国产精品国自产在线| 久操成人在线视频| 亚洲欧美综合v| 欧美亚州一区二区三区| 国产精品电影在线观看| 日本91av在线播放| 国产精品入口夜色视频大尺度| 精品亚洲一区二区三区在线观看| 欧美国产第二页| 中文字幕欧美日韩精品| 国产精品一久久香蕉国产线看观看| 精品中文字幕视频| 国产999精品久久久| 91亚洲精品一区二区| 成人国产在线视频| 亚洲精品www久久久| 欧亚精品中文字幕| 久久久久久久999精品视频| 色悠悠久久88| 亚洲图片在线综合| 国产视频亚洲精品| 国产精品欧美激情在线播放| 九九久久国产精品| 久久午夜a级毛片| 国产精品亚发布| 亚洲a区在线视频| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲女同性videos| 欧美精品成人91久久久久久久| 国产精品电影一区| 成人黄在线观看| 久久久久女教师免费一区| 欧美老少配视频| 日韩亚洲精品电影| 97精品一区二区三区| 亚洲国产天堂久久综合| 日韩电影免费观看在线观看| 高清一区二区三区日本久| 日韩激情视频在线| 日韩精品中文字幕视频在线| 久久久久久久久久久网站| 亚洲一区二区久久久| 91免费视频网站| 91精品国产91久久久久久吃药| 国产精品精品一区二区三区午夜版| 国产精品一区二区三区成人| 欧洲精品久久久| www.日韩系列| 日韩av在线影视| 国产一区二区激情| 日韩国产高清污视频在线观看| 欧美日韩国产中字| 国产精品久久久久久搜索| 亚洲人午夜精品| 欧美日产国产成人免费图片| 日韩欧美在线免费观看| 国外视频精品毛片| 久热精品视频在线观看| 欧美电影在线观看高清| 中文字幕日韩av| 国产精品高清网站| 国产91在线播放精品91| 一本久久综合亚洲鲁鲁| 性欧美亚洲xxxx乳在线观看| 欧美激情视频播放| 国产欧美一区二区白浆黑人| 一本一本久久a久久精品牛牛影视| 日韩国产在线播放| 成人精品aaaa网站| 欧美成人免费小视频| 久久夜色撩人精品| 日韩一区二区三区xxxx| 亚洲国产精品久久久久| 国产69精品久久久| 日韩男女性生活视频| 日本欧美国产在线| 成人国产精品久久久久久亚洲| 亚洲天堂网在线观看| 成人两性免费视频| 精品福利一区二区| 黑人巨大精品欧美一区免费视频| 欧美一级黄色网| 亚洲成人av中文字幕| 日韩中文理论片| 国产丝袜一区二区| 色中色综合影院手机版在线观看| 性视频1819p久久| 中文字幕日韩在线视频| 亚洲成人网久久久| 亚洲欧美制服丝袜| 欧美国产日韩xxxxx| 欧美精品日韩www.p站| 国产欧美一区二区三区久久人妖| 成人美女免费网站视频| 国产精品一区电影| 国内伊人久久久久久网站视频| 国产suv精品一区二区| 777午夜精品福利在线观看| 国产成人精品国内自产拍免费看| 精品视频偷偷看在线观看| 国产精品视频色| 亚洲欧美国产一本综合首页| 色噜噜狠狠狠综合曰曰曰88av| 成人免费观看a| 午夜美女久久久久爽久久| 欧美性猛交xxxx富婆|