站長資訊網
        最全最豐富的資訊網站

        vue什么情況用slot

        使用場景:通過slot(插槽)可以讓用戶可以拓展組件,去更好地復用組件和對其做定制化處理;如果父組件在使用到一個復用組件的時候,獲取這個組件在不同的地方有少量的更改,如果去重寫組件是一件不明智的事情。通過slot插槽向組件內部指定位置傳遞內容,完成這個復用組件在不同場景的應用;比如布局組件、表格列、下拉選、彈框顯示內容等。

        vue什么情況用slot

        本教程操作環境:windows7系統、vue3版,DELL G3電腦。

        slot是什么


        在HTML中 slot 元素 ,作為 Web Components 技術套件的一部分,是Web組件內的一個占位符

        該占位符可以在后期使用自己的標記語言填充

        舉個栗子

        <template id="element-details-template">   <slot name="element-name">Slot template</slot> </template> <element-details>   <span slot="element-name">1</span> </element-details> <element-details>   <span slot="element-name">2</span> </element-details>
        登錄后復制

        template不會展示到頁面中,需要用先獲取它的引用,然后添加到DOM中,

        customElements.define('element-details',   class extends HTMLElement {     constructor() {       super();       const template = document         .getElementById('element-details-template')         .content;       const shadowRoot = this.attachShadow({mode: 'open'})         .appendChild(template.cloneNode(true));   } })
        登錄后復制

        在Vue中的概念也是如此

        Slot 藝名插槽,花名“占坑”,我們可以理解為solt在組件模板中占好了位置,當使用該組件標簽時候,組件標簽里面的內容就會自動填坑(替換組件模板中slot位置),作為承載分發內容的出口

        可以將其類比為插卡式的FC游戲機,游戲機暴露卡槽(插槽)讓用戶插入不同的游戲磁條(自定義內容)

        使用場景


        通過插槽可以讓用戶可以拓展組件,去更好地復用組件和對其做定制化處理

        如果父組件在使用到一個復用組件的時候,獲取這個組件在不同的地方有少量的更改,如果去重寫組件是一件不明智的事情

        通過slot插槽向組件內部指定位置傳遞內容,完成這個復用組件在不同場景的應用

        比如布局組件、表格列、下拉選、彈框顯示內容等

        分類


        slot可以分來以下三種:

        • 默認插槽

        • 具名插槽

        • 作用域插槽

        默認插槽

        子組件用<slot>標簽來確定渲染的位置,標簽里面可以放DOM結構,當父組件使用的時候沒有往插槽傳入內容,標簽內DOM結構就會顯示在頁面

        父組件在使用的時候,直接在子組件的標簽內寫入內容即可

        子組件Child.vue

        <template>     <slot>       <p>插槽后備的內容</p>     </slot> </template>
        登錄后復制

        父組件

        <Child>   <div>默認插槽</div>   </Child>
        登錄后復制

        具名插槽

        子組件用name屬性來表示插槽的名字,不傳為默認插槽

        父組件中在使用時在默認插槽的基礎上加上slot屬性,值為子組件插槽name屬性值

        子組件Child.vue

        <template>     <slot>插槽后備的內容</slot>   <slot name="content">插槽后備的內容</slot> </template>
        登錄后復制

        父組件

        <child>     <template v-slot:default>具名插槽</template>     <!-- 具名插槽?插槽名做參數 -->     <template v-slot:content>內容...</template> </child>
        登錄后復制

        作用域插槽

        子組件在作用域上綁定屬性來將子組件的信息傳給父組件使用,這些屬性會被掛在父組件v-slot接受的對象上

        父組件中在使用時通過v-slot:(簡寫:#)獲取子組件的信息,在內容中使用

        子組件Child.vue

        <template>    <slot name="footer" testProps="子組件的值">           <h3>沒傳footer插槽</h3>     </slot> </template>
        登錄后復制

        父組件

        <child>      <!-- 把v-slot的值指定為作?域上下?對象 -->     <template v-slot:default="slotProps">       來??組件數據:{{slotProps.testProps}}     </template>     <template #default="slotProps">       來??組件數據:{{slotProps.testProps}}     </template> </child>
        登錄后復制

        小結:

        • v-slot屬性只能在<template>上使用,但在只有默認插槽時可以在組件標簽上使用

        • 默認插槽名為default,可以省略default直接寫v-slot

        • 縮寫為#時不能不寫參數,寫成#default

        • 可以通過解構獲取v-slot={user},還可以重命名v-slot="{user: newName}"和定義默認值v-slot="{user = '默認值'}"

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 在线精品无码字幕无码AV| 精品无码久久久久久尤物| 亚洲无线观看国产精品| 国产精品九九久久免费视频 | 久久综合精品国产二区无码| 国产亚洲精品看片在线观看| 久久精品国产99国产精偷| 国内精品久久久久伊人av| 99久免费精品视频在线观看| 精品国精品无码自拍自在线| 欧美国产成人精品一区二区三区| 98精品国产自产在线XXXX| 国产精品亚洲片夜色在线| 久久99精品久久久久久久不卡| 久久99亚洲综合精品首页| 国产精品丝袜久久久久久不卡| 国产精品成人va在线观看| 久热这里只有精品视频6| 中文字幕精品亚洲无线码二区| 欧美日韩精品一区二区三区不卡 | 华人在线精品免费观看| 国产精品嫩草影院AV| 久久Av无码精品人妻系列| 亚洲国产精品va在线播放| 亚洲国产精品日韩专区AV| 亚洲成网777777国产精品| 日韩午夜高清福利片在线观看欧美亚洲精品suv | 久久亚洲国产午夜精品理论片| www.久久精品| 国产精品视频一区二区三区经| 99久久99久久精品免费看蜜桃| 国精品无码一区二区三区在线| 精品一区二区三区无码免费视频| 无码精品A∨在线观看中文| 亚洲精品你懂的在线观看| 日本内射精品一区二区视频| 精品亚洲A∨无码一区二区三区| 久久精品人人做人人爽97| 久久成人国产精品| 国产成人精品福利网站在线| 欧美精品/日韩精品/国产精品|