成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Vue3 Slot—插槽全家桶使用詳解

開發 前端
插槽 Slot 就是子組件中提供給父組件使用的一個占位符,用 <slot></slot> 表示,父組件可以給這個占位符內填充任何模板代碼,填充的內容會自動替換 <slot></slot> 標簽。

插槽 slot 就是子組件中提供給父組件使用的一個占位符,用 <slot></slot> 表示,父組件可以給這個占位符內填充任何模板代碼,填充的內容會自動替換 <slot></slot> 標簽。

插槽被分為三種:匿名插槽、具名插槽、作用域插槽。

1、匿名插槽

沒有名字的插槽就是匿名插槽,組件可以放置一個或多個 <slot></slot>。

子組件內放置一個插槽:

<template>
<div>
<slot></slot>
</div>
</template>

父組件使用插槽:

<Header>
<div>哈哈哈哈哈哈</div>
</Header>

// 或
<Header>
<template v-slot>
哈哈哈哈哈哈
</template>
</Header>

如果有多個 slot 時,父組件中需要填充的內容就會被多次插入。

2、具名插槽

組件內可以放置多個插槽,如果都是匿名插槽的時候,渲染的都是父組件默認內容,無法實現插入多個不同內容,此時就需要給插槽設置名字以便于區分它們。

具名插槽就是給插槽取個名字,可以把組件內多個插槽放在不同的地方,父級填充內容時,可以根據名字把內容填充到對應的插槽內。

定義為多個插槽的組件:

<template>
<div>
頭部:
<slot name="header"></slot>
主體:
<slot></slot>
底部:
<slot name="footer"></slot>
</div>
</template>

父組件填充內容需要對象插槽名:

<Com>
<template v-slot:header>
<div>我是header</div>
</template>
<template v-slot>
<div>中間匿名插槽</div>
</template>
<template v-slot:footer>
<div>我是 footer</div>
</template>
</Com>

可以簡寫為:

<Com>
<template #header>
<div>我是header</div>
</template>
<template #default>
<div>中間匿名插槽</div>
</template>
<template #footer>
<div>我是 footer</div>
</template>
</Com>

3、作用域插槽

匿名插槽和具名插槽父組件只能訪問父組件中編譯的內容,子組件只能訪問子組件內的內容,有時我們在父組件需要訪問到子組件中的內容,此時 vue 給我們提供了作用域插槽。

作用域插槽子組件內定義要傳送的數據:

<template>
<div v-for="item in 10" :key="item">
<slot :data="item" name="list"></slot>
</div>
</template>

在調用組件的父組件內接收數據:

<SlotCom>
<template #list="{data}">
{{ data }}
</template>
</SlotCom>

4、動態插槽

有多個插槽,不同狀態下展示不同的插槽,此時我們就可以使用動態插槽,插槽名是一個變量名,其值可以是動態修改的。

<Dialog>
<template #[name]>
<div>
動態插槽
</div>
</template>
</Dialog>

我們可以做一個類似于選項卡的效果:

父組件代碼:

<button v-for="item in slotList" :key="item.name" @click="changeSlot(item)">
{{ item.content }}
</button>
<childCom>
<template #[name]>
<div>我是{{ name }}插槽</div>
</template>
</childCom>
<script>
import { reactive, ref } from 'vue'
let name: string = ref('header')

type Slots = {
name: string
content: string
}
const slotList = reactive<Slots[]>([
{ name: 'header', content: '頭' },
{ name: 'body', content: '中間' },
{ name: 'footer', content: '尾' },
])
const changeSlot = (item: Slots): void => {
name.value = item.name
}
</script>

子組件代碼:

<template>
<div>
<slot name="header"></slot>
<slot name="body"></slot>
<slot name="footer"></slot>
</div>
</template>

此時就可以動態地選擇其中任意一個插槽展示。

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-12-29 07:51:21

Vue3 插件Vue應用

2022-06-15 11:51:14

Vue3開發避坑

2022-01-13 08:13:14

Vue3 插件Vue應用

2024-06-03 10:00:51

Vue 3語法插槽

2022-01-21 09:06:13

Vue3版本兼容版本

2025-03-07 10:10:48

Vue插槽slot

2021-12-01 08:11:44

Vue3 插件Vue應用

2021-05-08 07:37:32

Vue 命名插槽

2024-11-06 10:16:22

2021-11-30 08:19:43

Vue3 插件Vue應用

2023-11-28 09:03:59

Vue.jsJavaScript

2024-03-22 08:57:04

Vue3Emoji表情符號

2024-03-21 08:34:49

Vue3WebSocketHTTP

2020-09-19 21:15:26

Composition

2022-09-06 12:20:30

Vue3CVCRUD

2020-05-25 17:03:47

Vue嵌套插槽開發

2024-05-15 09:53:22

2024-04-08 07:28:27

PiniaVue3狀態管理庫

2022-11-28 17:21:24

2021-12-02 05:50:35

Vue3 插件Vue應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩在线精品 | 成年人网站在线观看视频 | 伊人影院99 | 一区二区国产在线观看 | 精品国产欧美一区二区三区不卡 | 色在线视频网站 | 福利片在线观看 | 日韩成人在线播放 | 国产精品亚洲成在人线 | 色在线免费视频 | 日本亚洲一区二区 | 欧美理论片在线 | 成人精品一区二区三区中文字幕 | 精品成人一区 | 美女视频一区二区三区 | 九九热热九九 | av中文字幕在线播放 | 在线观看日本高清二区 | 久久精品一区二区三区四区 | 国产成人精品久久二区二区91 | 日韩高清国产一区在线 | 特级丰满少妇一级aaaa爱毛片 | 国产精品日韩欧美一区二区 | 国产成在线观看免费视频 | 日本精品一区二区三区四区 | 精品二 | 不卡在线视频 | 国产精品免费大片 | 亚洲国产精品久久 | 中文字幕 欧美 日韩 | 国产精品久久久久aaaa九色 | 黄色a视频 | 国产亚洲一区二区三区 | 成人网在线| 四虎影视1304t | 精品视频 免费 | 五月婷婷视频 | 欧美久久精品一级黑人c片 91免费在线视频 | 日韩男人天堂 | 久久精品日产第一区二区三区 | 欧美一级片在线观看 |