当前位置: 首页 > news >正文

vue3插槽详解

默认插槽

默认插槽是最基本的插槽类型,用于接收父组件传递的任意内容。

子组件 (ChildComponent.vue)

<template><div><h2>子组件标题</h2><!-- 默认插槽 --><slot></slot></div>
</template><script setup>
// Composition API 不需要额外代码处理默认插槽
</script>

父组件使用

<template><ChildComponent><p>这是插入到默认插槽的内容</p></ChildComponent>
</template><script setup>
import ChildComponent from './ChildComponent.vue'
</script>

具名插槽

具名插槽允许你有多个插槽,并通过名称区分它们。

子组件 (NamedSlots.vue)

<template><div><header><slot name="header"></slot></header><main><slot></slot> <!-- 默认插槽 --></main><footer><slot name="footer"></slot></footer></div>
</template><script setup>
// 不需要额外代码处理具名插槽
</script>

父组件使用

<template><NamedSlots><template v-slot:header><h1>这是头部内容</h1></template><p>这是默认插槽的内容</p><template v-slot:footer><p>这是页脚内容</p></template></NamedSlots>
</template><script setup>
import NamedSlots from './NamedSlots.vue'
</script>

作用域插槽

作用域插槽允许子组件向插槽传递数据,父组件可以访问这些数据。

子组件 (ScopedSlot.vue)

<template><ul><li v-for="item in items" :key="item.id"><!-- 向插槽传递数据 --><slot :item="item" :index="index"></slot></li></ul>
</template><script setup>
import { ref } from 'vue'const items = ref([{ id: 1, name: '项目1' },{ id: 2, name: '项目2' },{ id: 3, name: '项目3' }
])
</script>

父组件使用

<template><ScopedSlot><!-- 使用解构语法接收作用域数据 --><template v-slot="{ item, index }">{{ index + 1 }}. {{ item.name }}</template></ScopedSlot>
</template><script setup>
import ScopedSlot from './ScopedSlot.vue'
</script>

动态插槽名

Vue 3 支持动态插槽名

<template><DynamicSlot><template v-slot:[dynamicSlotName]>动态插槽内容</template></DynamicSlot>
</template><script setup>
import { ref } from 'vue'const dynamicSlotName = ref('header')
</script>

使用 useSlots() 来访问插槽内容

<script setup>
import { useSlots } from 'vue'const slots = useSlots()// 检查某个插槽是否存在
if (slots.header) {console.log('header 插槽存在')
}
</script>

http://www.xdnf.cn/news/1207009.html

相关文章:

  • Deep Research(信息检索增强)认识和项目实战
  • 设计模式---单例
  • 博物馆 VR 导览:图形渲染算法+智能讲解技术算法实现及优化
  • 【MySQL】从连接数据库开始:JDBC 编程入门指南
  • 如何从 Web2 转型到 Web3
  • 01 基于sklearn的机械学习-机械学习的分类、sklearn的安装、sklearn数据集、数据集的划分、特征工程中特征提取与无量纲化
  • 使用JavaScript实现轮播图的任意页码切换和丝滑衔接切换效果
  • Linux之网络部分-应用层协议 HTTP
  • GaussDB 数据库架构师修炼(十) 性能诊断常用视图
  • BGP高级特性之ORF
  • 【C++】第十九节—一文万字详解 | AVL树实现
  • C51 中断
  • mangoDB面试题及详细答案 117道(026-050)
  • 电商修图,尺寸修改适配各大电商平台
  • 第17章——多元函数积分学的预备知识
  • VMware Workstation Pro 详细安装步骤
  • Linux->模拟实现 fopen/fwrite/fclose
  • jQuery 最新语法大全详解(2025版)
  • Uniswap V2 成功上线 PolkaVM:Polkadot Hub 的里程碑时刻
  • 结合项目阐述 设计模式:单例、工厂、观察者、代理
  • OSPF笔记
  • 图片上传 el+node后端+数据库
  • 4.应用层自定义协议与序列化
  • 生物信息学数据技能-学习系列001
  • 深入Go并发编程:Channel、Goroutine与Select的协同艺术
  • Deepseek + browser-use 轻松实现浏览器自动化
  • MCP error -32000: Connection closed
  • c++: 尾置返回类型(Trailing Return Type)
  • GaussDB 查看会话连接数
  • Android通知(Notification)全面解析:从基础到高级应用