内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Vue中的插槽是什么及怎么用

這篇文章主要介紹了Vue中的插槽是什么及怎么用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Vue中的插槽是什么及怎么用文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

創(chuàng)新互聯(lián)建站專(zhuān)注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、做網(wǎng)站、青山網(wǎng)絡(luò)推廣、小程序定制開(kāi)發(fā)、青山網(wǎng)絡(luò)營(yíng)銷(xiāo)、青山企業(yè)策劃、青山品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供青山建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.rwnh.cn

Vue中的插槽是什么及怎么用

在 Vue 中,插槽是個(gè)很強(qiáng)大的功能,它可以使封裝的組件靈活性增強(qiáng)很多,比如你在封裝一個(gè)組件時(shí)使用了插槽,那在父組件調(diào)用時(shí),這里的內(nèi)容就可以由父組件自由定義,而無(wú)需在封裝組件時(shí)苦想如何覆蓋各種使用場(chǎng)景。

基礎(chǔ)插槽

假設(shè)我們現(xiàn)在有一個(gè)需要封裝的組件 SlotComponent

<template>
  <div>這是一個(gè)slot:<slot> </slot></div>
</template>
<SlotComponent>來(lái)自父組件的內(nèi)容</SlotComponent>

slot 中的內(nèi)容就可以在父組件中任意定義。要是組件中沒(méi)有<slot>元素,那么在父組件調(diào)用時(shí),組件起始和結(jié)束標(biāo)簽之間的內(nèi)容就都會(huì)丟失掉。

既然 slot 是在 SlotComponent組件中的,那在父組件中調(diào)用的時(shí)候能否能使用 SlotComponent 組件里的數(shù)據(jù)呢 ? 顯然是不能的,因?yàn)樗麄兯幍淖饔糜虿⒉幌嗤?/p>

父級(jí)模板里的所有內(nèi)容都是在父級(jí)作用域中編譯的;子模板里的所有內(nèi)容都是在子作用域中編譯的。

插槽的默認(rèn)內(nèi)容

插槽也可以設(shè)置默認(rèn)的內(nèi)容,這有點(diǎn)像 es6 中函數(shù)參數(shù)的默認(rèn)值,當(dāng)父組件調(diào)用時(shí)并沒(méi)有提供內(nèi)容,那么這個(gè)默認(rèn)值就會(huì)被渲染出來(lái)。提供了內(nèi)容的話,則會(huì)替代默認(rèn)內(nèi)容。

<template>
  <div>
    <slot>這是slot的默認(rèn)內(nèi)容</slot>
  </div>
</template>
<DefaultSlot></DefaultSlot>

在調(diào)用時(shí)標(biāo)簽之間并沒(méi)有提供內(nèi)容,默認(rèn)值得以渲染,成為一個(gè)兜底內(nèi)容。

具名插槽

如果在組件中我需要多個(gè)地方用到插槽,那就需要給 slot 添加 name,來(lái)區(qū)分內(nèi)容渲染到什么地方。

// named slot,名字叫 NamedSlot
<template>
  <div>
    這是具名插槽
    <div>
      <slot name="slot1"></slot>
    </div>
    <div>
      <slot name="slot2"></slot>
    </div>
    <div>
      <slot name="slot3"></slot>
    </div>
  </div>
</template>

// 在父組件中調(diào)用
<NamedSlot>
    <template v-slot:slot1>這是插入slot1的內(nèi)容</template>
    <template v-slot:slot2>這是插入slot2的內(nèi)容</template>
    <template v-slot:slot3>這是插入slot3的內(nèi)容</template>
</NamedSlot>

slot 加上 name 屬性后,可以通過(guò) v-slot:slotName的形式分發(fā)內(nèi)容。不給 name 屬性的話,就默認(rèn)namedefault,等同于 v-slot:default,也可以縮寫(xiě)為#default

注意,v-slot 只能添加在<template> ,但是也有特殊情況,后面會(huì)講到。

插槽如何訪問(wèn)子組件內(nèi)容

通過(guò) slot,我們可以在父組件為子組件添加內(nèi)容,但是父子組件的作用域是不同的,我們想在父組件使用子組件的數(shù)據(jù)該怎么辦呢?

可以在子組件 <slot> 元素上綁定屬性,值為你需要傳遞給父組件的內(nèi)容。

// 子組件 組件名稱(chēng)為 SlotProp
<div>
    <slot name="slot1" :value1="child1"></slot>
    <slot name="slot2" :value2="child2"></slot>
</div>
//調(diào)用
<SlotProp>
  <template v-slot:slot1="slotProps">
    {{ slotProps.value1 }}
  </template>
  <template v-slot:slot2="slotProps">
    {{ slotProps.value2 }}
  </template>
</SlotProp>

簡(jiǎn)單來(lái)說(shuō),就是在 slot 上通過(guò) :key='value'的形式綁定一個(gè)值,

在父組件調(diào)用時(shí),通過(guò)v-slot:slotName="slotProps"的形式拿到這個(gè)值,slotProps名稱(chēng)可以自己定義,

再通過(guò) slotProps[key] 去拿到這個(gè)值。

如果組件只有一個(gè)默認(rèn)模版的話,是可以不用在 template 上寫(xiě) v-slot:slotName="slotProps"的,可以直接在組件名稱(chēng)上寫(xiě) v-slot

<SlotProp v-slot:default="slotProps">
    {{ slotProps.value1 }}
</SlotProp>

上面提到過(guò),未指定 name 就會(huì)被認(rèn)為是 default ,這里也是同理,v-slot:default="slotProps"可以簡(jiǎn)寫(xiě)成 v-slot="slotProps"。

slotProps 的解構(gòu)

作用域插槽的內(nèi)部工作原理是將你的插槽內(nèi)容包括在一個(gè)傳入單個(gè)參數(shù)的函數(shù)里

基于插槽的實(shí)現(xiàn)原理,我們也可以使用一些 ES6 的語(yǔ)法來(lái)操作 slotProps,比如解構(gòu)prop重命名賦默認(rèn)值等。

// 解構(gòu)
<SlotProp v-slot="{ value1 }">
    {{ value1 }}
</SlotProp>

// 重命名,將 value1 重命名為 name1
<SlotProp v-slot="{ value1: name1 }">
    {{ name1 }}
</SlotProp>

// 賦默認(rèn)值
<SlotProp v-slot="{ value1 = '這是默認(rèn)值' }">
    {{ value1 }}
</SlotProp>

動(dòng)態(tài)插槽名

slot 支持通過(guò) <template v-slot:[dynamicSlotName]>這樣的方式來(lái)實(shí)現(xiàn)動(dòng)態(tài)插槽。

有時(shí)在一個(gè)基礎(chǔ)組件中循環(huán)了插入了多個(gè) slot ,比如這樣

<div v-for="item in slotList" :key="item">
      <slot :name="item"></slot>
</div>

在調(diào)用的時(shí)候就可以使用動(dòng)態(tài)插槽名+ 循環(huán)來(lái)動(dòng)態(tài)渲染相應(yīng)的 slot

<template
  v-for="item in slotList"
  v-slot:[item]
>
    {{item}}
</template>

關(guān)于“Vue中的插槽是什么及怎么用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Vue中的插槽是什么及怎么用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文名稱(chēng):Vue中的插槽是什么及怎么用
本文來(lái)源:http://www.rwnh.cn/article10/jsdsgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、網(wǎng)站策劃面包屑導(dǎo)航、網(wǎng)站制作網(wǎng)站排名小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
保德县| 安阳县| 泾川县| 开远市| 吕梁市| 新河县| 库尔勒市| 肇庆市| 瑞昌市| 文登市| 漠河县| 牟定县| 常州市| 安吉县| 新巴尔虎右旗| 锦屏县| 英超| 泽州县| 新昌县| 金寨县| 桃源县| 莲花县| 达州市| 霍林郭勒市| 亳州市| 潼关县| 湟源县| 彩票| 永春县| 墨江| 托里县| 中方县| 满洲里市| 逊克县| 广昌县| 霍城县| 武宣县| 五河县| 海阳市| 嵊州市| 新巴尔虎左旗|