vue中slot插槽的參數(shù)匯總及使用方案
小小插槽一會(huì)標(biāo)簽<slot></slot>,一會(huì)屬性v-slot,一會(huì)#的,到底是怎么用,列個(gè)表一眼看明白。
| 默認(rèn)插槽 | 具名插槽 | 作用域插槽 | |
|---|---|---|---|
| 定義 | <slot></slot> | <slot name="header"></slot> | v-bind:user="user" |
| 使用 | v-slot | v-slot:header | v-slot="slotProps" v-slot:default="{ user }" v-slot:other="slotProps" |
| 縮寫(xiě)使用 | #default | #header | #default="{ user }" |
注意 v-slot 只能添加在 <template> 上
最簡(jiǎn)單的定義及使用
<button>
<slot>這是當(dāng)使用的時(shí)候沒(méi)傳參的時(shí)候顯示的內(nèi)容</slot>
</button>
<child>編輯</child>
<button>編輯</button>
定義的child組件,如果沒(méi)有寫(xiě)<slot></slot>那使用的時(shí)候不管<child></child>標(biāo)簽里面寫(xiě)什么內(nèi)容都會(huì)丟失。
定義<slot></slot>后,如果<child></child>使用的時(shí)候里面什么都沒(méi)寫(xiě)那渲染結(jié)果為<slot></slot>標(biāo)簽里面的內(nèi)容。
具名插槽的使用
一個(gè)不帶 name 的 <slot> 出口會(huì)帶有隱含的名字“default”。
<div class="title">
<slot>標(biāo)題位置</slot>
</div>
<div class="subtitle">
<slot name="subTitle">這是副標(biāo)題</slot>
</div>
<child>
默認(rèn)插槽,可以寫(xiě)template v-slot:default也可以不寫(xiě)
<h3>我還能加個(gè)標(biāo)簽</h3>
<template v-slot:subtitle>這是副標(biāo)題</template>
這個(gè)地方也是默認(rèn)插槽里面的
</child>
<div class="title">
默認(rèn)插槽,可以寫(xiě)template v-slot:default也可以不寫(xiě)
<h3>我還能加個(gè)標(biāo)簽</h3>
這個(gè)地方也是默認(rèn)插槽里面的
</div>
<div class="subtitle">這是副標(biāo)題</div>
任何沒(méi)有被包裹在帶有 v-slot 的 <template> 中的內(nèi)容都會(huì)被視為默認(rèn)插槽的內(nèi)容。
然而,如果想更明確一些,仍然可以在一個(gè) <template> 中包裹默認(rèn)插槽的內(nèi)容
作用域插槽默認(rèn)使用方法
父級(jí)模板里的所有內(nèi)容都是在父級(jí)作用域中編譯的;子模板里的所有內(nèi)容都是在子作用域中編譯的。
想讓插槽內(nèi)容能夠訪問(wèn)子組件中才有的數(shù)據(jù)就用到了作用域
<div class="title">
<slot v-bind:user="user">{{ user.firstName }}</slot>
<!-- 簡(jiǎn)寫(xiě):
<slot :user="user">{{ user.firstName }}</slot> -->
</div>
<script setup>
import { reactive } from "vue";
const user = reactive({
firstName: "Zhang",
lastName: "San",
});
</script>
獨(dú)占默認(rèn)插槽的縮寫(xiě)語(yǔ)法
<child v-slot="slotProps">
我的名字是{{ slotProps.user.lastName }}
</child>
<div class="title">我的名字是San</div>
終級(jí) - 作用域+命名插槽使用方法
只要出現(xiàn)多個(gè)插槽,請(qǐng)始終為所有的插槽使用完整的基于 <template> 的語(yǔ)法
<div class="title">
<slot :user="user">標(biāo)題位置</slot>
</div>
<div class="subtitle">
<slot name="subTitle" :user="user">這是副標(biāo)題</slot>
</div>
<script setup>
import { reactive } from "vue";
const user = reactive({
firstName: "Zhang",
lastName: "San",
});
</script>
<child>
<template v-slot="slotProps">
有命名插槽的時(shí)候v-slot就不能寫(xiě)到child標(biāo)簽里面了 {{slotProps.user.firstName}}
</template>
<template v-slot:subTitle="{user}">{{user.lastName}}</template>
</child>
<child>
<template #default="{ user }">
有命名插槽的時(shí)候v-slot就不能寫(xiě)到child標(biāo)簽里面了 {{ user.firstName }}
</template>
<template #subTitle="{ user: { lastName } }">{{ lastName }}</template>
</child>
<div class="title">有命名插槽的時(shí)候v-slot就不能寫(xiě)到child標(biāo)簽里面了 Zhang</div> <div class="subtitle">San</div>
到此這篇關(guān)于vue中slot插槽的參數(shù)匯總及使用方案的文章就介紹到這了,更多相關(guān)vue slot插槽匯總及使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue仿淘寶滑動(dòng)驗(yàn)證碼功能(樣式模仿)
淘寶大家都使用過(guò),淘寶滑動(dòng)驗(yàn)證碼的目的是為了驗(yàn)證到底是人還是機(jī)器,今天小編給大家分享的是模仿淘寶滑動(dòng)驗(yàn)證碼的樣式,感興趣的朋友跟隨小編一起看看吧2019-12-12
vue如何監(jiān)聽(tīng)某個(gè)元素的大小變化
這篇文章主要介紹了vue如何監(jiān)聽(tīng)某個(gè)元素的大小變化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
詳解vue組件化開(kāi)發(fā)-vuex狀態(tài)管理庫(kù)
本篇文章主要介紹了詳解vue組件化開(kāi)發(fā)-vuex狀態(tài)管理庫(kù),具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04
vue移動(dòng)端html5頁(yè)面根據(jù)屏幕適配的四種解決方法
在vue移動(dòng)端h5頁(yè)面當(dāng)中,其中適配是經(jīng)常會(huì)遇到的問(wèn)題,這塊主要有四個(gè)方法可以適用。這篇文章主要介紹了vue移動(dòng)端h5頁(yè)面根據(jù)屏幕適配的四種方案 ,需要的朋友可以參考下2018-10-10

