您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Vue3插槽怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Vue3插槽怎么用”這篇文章吧。
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> 內容 </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' }
此處使用的是函數,也可以直接使用變量。
以上是“Vue3插槽怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。