当前位置: 首页 > 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.lryc.cn/news/604232.html

相关文章:

  • Linux 线程概念与控制
  • C#_ArrayList动态数组
  • 3D打印喷头的基本结构
  • [css]旋转流光效果
  • 机械臂抓取的无模型碰撞检测代码
  • Export useForm doesn‘t exist in target module
  • 前端手写贴
  • zoho crm为什么xx是deal的关联对象但是调用函数时报错说不是关联对象
  • Docker初学者需要了解的几个知识点(三):Docker引擎与Docker Desktop
  • BERT和GPT和ELMO核心对比
  • Redis 键值对操作详解:Python 实现指南
  • 字符串函数安全解析成执行函数
  • 解密数据结构之二叉树
  • Wan2.1
  • “非参数化”大语言模型与RAG的关系?
  • 集成电路学习:什么是Wi-Fi无线保真度
  • 「源力觉醒 创作者计划」_文心大模型 4.5 多模态实测:开源加速 AI 普惠落地
  • LeetCode 283 - 移动零
  • 【面试】软件测试面试题
  • mangoDB面试题及详细答案 117道(026-050)
  • Netty中InternalThreadLocalMap的作用
  • 【C++算法】72.队列+宽搜_二叉树的最大宽度
  • React函数组件的“生活管家“——useEffect Hook详解
  • 【Linux】初识make/makefile
  • sqLite 数据库 (2):如何复制一张表,事务,聚合函数,分组加过滤,列约束,多表查询,视图,触发器与日志管理,创建索引
  • 【MySQL基础篇】:MySQL表的约束常用类型以及实战示例
  • 15-C语言:第15~16天笔记
  • dubbo应用之3.0新特性(响应式编程)(2)
  • 《剑指offer》-算法篇-位运算
  • window weblogic 解锁