Vue3 插槽使用匯總
阿新 • • 發佈:2021-12-30
目錄
- 一、v-slot 介紹
- 二、匿名插槽
- 三、具名插槽
- 四、作用域插槽
- 五、動態插槽名
一、v-slot 介紹
v-slot
只能用在 template
或元件上使用,否則就會報錯。
v-slot
也是其中一種指令。
使用示例:
//父元件程式碼 <child-com> <template v-slot:nameSlot> 插槽內容 </template> </child-com> //元件模板 <slot name="nameSlot"></slot> v-slot 的語法,簡化 slot、slot-scope 作用域插槽的功能,相比更加強大,程式碼效率更高。
二、匿名插槽
當元件中只有一個插槽的時候,可以不設定 slot
的 name
屬性,v-slot 後可以不帶引數,但是 v-slot
在沒有設定 name 屬性的插槽口也會帶有隱含的 “default”。
匿名插槽使用:
//元件呼叫 <child-com> <template v-slot> 插槽內容 </template> </child-com> //元件模板 <slot ></slot>
雖然 v-slot
沒有設定引數,但不能刪除掉 ,否則插槽內容無法正常渲染。
三、具名插槽
一個元件中有多個插槽的時候,如果沒有設定 v-slot 屬性值,會預設把元素插到沒有設定 name 屬性值的 slot 元件中,為了把對應的元素放到指定的位置,就需要藉助 v-slot
name
屬性,把內容對應起來。
具名插槽使用:
//父元件 <child-com> <template v-slot:header> 頭部 </template> <template v-slot:body> 內容 </template> <template v-slot:footer> 腳 </template> </child-com> //子元件 <div> <slot name="header"></slot> <slot name="body"></slot> <slot name="footer"></slot> </div>
具名插槽縮寫:
v-slot
與 v-bind
、v-on
指令一樣,也存在縮寫。可以把 v-slot:
簡寫為 # 號。
如上述 v-slot:footer 可以簡寫為 #footer 。
上述的父元件程式碼可以簡化為:
<child-com>
<template #header>
頭部
</template>
<template #body>客棧;
內www.cppcns.com容
</template>
<template #footer>
腳
</template>
</child-com>
注意:和其他指令一樣程式設計客棧,只有存在引數時,才可以簡寫,否則是無效的。
四、作用域插槽
有時讓插槽內容能夠訪問子元件中才有的資料是很有用的。當一個元件被用來渲染一個專案陣列時,這是一個常見的情況,我們希望能夠自定義每個專案的渲染方式。
要使子元件上的屬性在插槽內容上可用,需要給 slot
繫結一個屬性。然後在 v-slot 處接收並定義提供插槽 props
名字。
使用示例:
// <child-com> <template v-slot:header="slotProps"> 插槽內容--{{ slotProps.item }} 序號--{{ slotProps.index }} </template> </child-com> //子元件程式碼 <template> <div v-for="(item,index) in arr" :key="index"> <slot :item="item" name="header" :index="index"></slot> </div> </template> <script setup> const arr = ['1111','2222','3333'] </script>
五、動態插槽名
v-slot
指令引數也可以是動態的,用來定義動態插槽名。
如:
<child-com> <template v-slot:[dd()]> 動態插槽名 </template> </child-com> <script setup> const dd = () => { return 'hre' }
此處使用的是函式,也可以直接使用變數。
到此這篇關於3 插槽使用匯總的文章就介紹到這了,更多相關Vue3 插槽使用內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!