Vue3 中的插槽

Vue3 中插槽的使用,插槽是 Vue 中的一个特别特性,插槽就是模版内容。例如<h1>标题 1</h1>标题 1 就是插槽,Vue 是无法识别模板内容的,只能通过属性进行传递。Slot 主要包括默认、具名和作用域。Slot开发起来难度不大,看如下代码:

插槽

首先在组件中插槽定义:
<slot></slot>父组件不做任何指定时,所有内容均显示在默认插槽中。
<slot name="slot1"></slot>父组件中需要指定名字

作用域插槽是一种子组件向父组件传递参数的方式,默认情况下父组件插槽内容只能使用父组件定义的变量,作用域插槽可以将子组件中的参数向父组件进行传递。

复制代码
<template>
    <slot></slot>
    <slot name="slot1"></slot>
    <slot name="slot2" v-bind="params"></slot>
</template>
<script setup lang="ts">
import { reactive } from 'vue';

type user = {
    "name":string
}

const params = reactive<user>({name:"www"})

</script>

在父组件中使用插槽。

复制代码
<template>
<SlotView>
    <div>默认 Slot</div>
    <template #slot1>
        <div>具名 Slot</div>
    </template>

    <template #slot2="params">
        <div>作用域插槽 {{params.name}}</div>
    </template>
</SlotView>
</template>
<script setup lang="ts">
import { reactive } from 'vue';
import SlotView from './slots.vue'

const params = reactive({name:"参数 name"})

</script>
<style>
.c1{
    background-color: royalblue;
}
</style>

总结

Vue 中插槽使用很普遍,在各类组件库中都很常见。

相关推荐
码路飞7 分钟前
热榜全是 OpenClaw,但我用 50 行 Python 就造了个桌面 AI Agent 🤖
java·javascript
前端Hardy35 分钟前
别再忽略 Promise 拒绝了!你的 Node.js 服务正在“静默自杀”
前端·javascript·面试
前端Hardy37 分钟前
别再被setTimeout闭包坑了!90% 的人都写错过这个经典循环
前端·javascript·vue.js
小林coding43 分钟前
专为程序员打造的简历模版来啦!覆盖前端、后端、测开、大模型等专业简历
前端·后端
前端Hardy43 分钟前
你的 Vue 组件正在偷偷吃掉内存!5 个常见的内存泄漏陷阱与修复方案
前端·javascript·面试
RaidenLiu1 小时前
Flutter Platform Channel 底层架构解析 —— 从 BinaryMessenger 到跨平台消息通信机制
前端·flutter·前端框架
bluceli1 小时前
CSS容器查询:响应式设计的新范式
前端·css
Tapir1 小时前
被 Karpathy 下场推荐的 NanoClaw 是什么来头
前端·后端·github
前端人类学1 小时前
深入解析JavaScript中的null与undefined:区别、用法及判断技巧
前端·javascript
ssshooter2 小时前
Tauri 项目实践:客户端与 Web 端的授权登录实现方案
前端·后端·rust