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

不同类型插槽的声明方法和对应的调用方式

在 Vue 3 中,slot 用于让组件的使用者可以向组件内部插入自定义内容。Vue 3 提供了多种声明和使用插槽的方式,下面为你详细介绍不同类型插槽的声明方法和对应的调用方式。
1. 匿名插槽
声明方法
在组件模板中直接使用 标签来定义匿名插槽,它可以接收组件使用者传入的任意内容。

<!-- MyComponent.vue -->
<template><div><h2>这是组件标题</h2><slot></slot></div>
</template>

调用方式
在使用该组件时,直接在组件标签内写入要插入的内容,这些内容会被插入到匿名插槽的位置。

<template><MyComponent><p>这是插入到匿名插槽的内容</p></MyComponent>
</template>

2. 具名插槽
声明方法
在组件模板中使用 name 属性为 标签命名,从而定义具名插槽。

<!-- MyComponent.vue -->
<template><div><header><slot name="header"></slot></header><main><slot></slot></main><footer><slot name="footer"></slot></footer></div>
</template>

调用方式
在使用组件时,使用 标签并通过 v-slot 指令指定要插入的具名插槽名称。v-slot 可以简写为 #。

<template><MyComponent><template #header><h1>这是头部内容</h1></template><p>这是插入到匿名插槽的内容</p><template #footer><p>这是底部内容</p></template></MyComponent>
</template>

3. 作用域插槽
声明方法
作用域插槽允许组件向插槽内容传递数据。在组件模板中,通过在 标签上绑定属性来传递数据。

<!-- MyComponent.vue -->
<template><div><slot :items="items"></slot></div>
</template><script setup>
import { ref } from 'vue';
const items = ref(['苹果', '香蕉', '橙子']);
</script>

调用方式
在使用组件时,通过 v-slot 指令接收传递的数据,语法为 v-slot:插槽名=“变量名”,可以使用解构赋值来获取具体的数据。

<template><MyComponent><template #default="{ items }"><ul><li v-for="item in items" :key="item">{{ item }}</li></ul></template></MyComponent>
</template>

4. 具名作用域插槽
声明方法
具名作用域插槽结合了具名插槽和作用域插槽的特点,在具名插槽的基础上传递数据。

<!-- MyComponent.vue -->
<template><div><slot name="list" :items="items"></slot></div>
</template><script setup>
import { ref } from 'vue';
const items = ref(['苹果', '香蕉', '橙子']);
</script>

调用方式
在使用组件时,使用 v-slot 指令指定具名插槽,并接收传递的数据。

<template><MyComponent><template #list="{ items }"><ul><li v-for="item in items" :key="item">{{ item }}</li></ul></template></MyComponent>
</template>

通过以上不同类型插槽的声明和调用方式,你可以在 Vue 3 中灵活地实现组件内容的自定义插入和数据传递。

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

相关文章:

  • 题目:胖达的山头
  • 关于php-fpm的调优和配置
  • 2025年渗透测试面试题总结-拷打题库26(题目+回答)
  • AXPA17388: 4x45W 车用AB类四通道桥式输出音频功率放大器
  • MLOps全链路能力:模型监控、版本回滚与持续训练
  • 欧拉计划 Project Euler60(素数对集合)题解
  • LeetCode 2302 统计得分小于K的子数组数目(滑动窗口)
  • Mysql存储引擎、锁机制
  • (2)python之虚拟环境管理工具venv和anaconda
  • Lucene中不同搜索类型的使用方法、基本概念、应用场景、差异对比,并通过表格进行总结
  • JavaScript 作用域全面总结
  • 夜族觉醒 服务搭建 异地联机 保姆教程 流畅不卡顿
  • 【Science】强耦合手性准BIC驱动动量空间可编程高Q圆偏振激光——哈工大突破拓扑光子学新维度
  • GTC Taipei 2025 医疗域前瞻:从AI代理到医疗生态,解码医疗健康与生命科学的未来图景
  • 分享一款免费的 AI 工作流平台
  • Golang 并发编程
  • 从遍历序列构造二叉树:前序+中序与中序+后序的递归解法详解
  • USB 网卡——RNDIS 介绍
  • 数据资产:价值的源泉与释放之道
  • Langchain组件
  • 高级前端面试题:基于2025年最新技术体系
  • TS学习指南
  • 人工智能和机器学习在包装仿真中的应用与价值
  • MQTT - Android MQTT 编码实战(MQTT 客户端创建、MQTT 客户端事件、MQTT 客户端连接配置、MQTT 客户端主题)
  • Python列表全面解析:从基础到高阶操作
  • 域名转移:什么是转移码/EPP码/授权码?
  • 基于蓝耘MaaS平台进行api调用创建本地智能ai
  • 代码随想录第39天|leetcode198.打家劫舍、leetcode213.打家劫舍II 、leetcode337.打家劫舍III
  • 4月29日日记
  • 【浙江大学DeepSeek公开课】DeepSeek的本地化部署与AI通识教育之未来