news 2026/5/28 8:12:33

Vue 3 中的具名插槽仍然完全支持,Vue 2 的旧语法 Vue 3 中已废弃

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue 3 中的具名插槽仍然完全支持,Vue 2 的旧语法 Vue 3 中已废弃

Vue3中具名插槽的使用方式更加统一和简洁。


新版本采用v-slot指令(简写为#)替代Vue2的slot和slot-scope属性,支持默认插槽、具名插槽和作用域插槽。


子组件通过name属性定义插槽,父组件使用#插槽名语法插入内容。


Vue3还增强了动态插槽名支持和参数解构功能,废弃了旧语法,使插槽使用更加一致,特别是在TypeScript环境下提供更好的类型推断。


Vue 3 中的具名插槽仍然完全支持,而且语法更加统一和一致。


以下是 Vue 3 中具名插槽的使用方式:


1. 基础具名插槽使用

子组件:BaseLayout.vue

vue

<template> <div class="container"> <header> <!-- 具名插槽:header --> <slot name="header"></slot> </header> <main> <!-- 默认插槽 --> <slot></slot> <!-- 或者明确指定默认插槽 --> <slot name="default"></slot> </main> <footer> <!-- 具名插槽:footer --> <slot name="footer"></slot> </footer> </div> </template>

父组件使用:

vue

<template> <BaseLayout> <!-- Vue 3 的新语法:v-slot 指令 --> <template v-slot:header> <h1>这里是页头</h1> </template> <!-- 默认插槽内容(两种写法都可以) --> <p>这里是主要内容</p> <!-- 或者明确指定默认插槽 --> <template v-slot:default> <p>这里是主要内容</p> </template> <!-- 具名插槽:footer --> <template v-slot:footer> <p>这里是页脚</p> </template> </BaseLayout> </template>

2. 简写语法(推荐)

Vue 3 推荐使用简写语法#

vue

<template> <BaseLayout> <!-- 简写:使用 # 代替 v-slot: --> <template #header> <h1>这里是页头</h1> </template> <!-- 默认插槽的简写 --> <p>这里是主要内容</p> <!-- 或者 --> <template #default> <p>这里是主要内容</p> </template> <template #footer> <p>这里是页脚</p> </template> </BaseLayout> </template>

3. 作用域插槽(带参数的插槽)

子组件:CurrentUser.vue

vue

<template> <slot name="default" :user="user" :age="age"></slot> <!-- 或者具名作用域插槽 --> <slot name="info" :user="user" :age="age"></slot> </template> <script setup> import { ref } from 'vue' const user = ref('张三') const age = ref(25) </script>

父组件接收插槽参数:

vue

<template> <CurrentUser> <!-- 接收默认插槽的参数 --> <template v-slot:default="slotProps"> <p>用户:{{ slotProps.user }},年龄:{{ slotProps.age }}</p> </template> <!-- 具名作用域插槽 --> <template #info="{ user, age }"> <p>信息:{{ user }}({{ age }}岁)</p> </template> </CurrentUser> </template>

4. 动态插槽名

vue

<template> <BaseLayout> <template #[dynamicSlotName]> <p>动态插槽内容</p> </template> <!-- 使用动态插槽名 --> <template v-slot:[headerSlot]> <h1>动态页头</h1> </template> </BaseLayout> </template> <script setup> import { ref } from 'vue' const dynamicSlotName = ref('header') const headerSlot = ref('header') </script>

5. 多个插槽的简写和解构

vue

<template> <TodoList :todos="todos"> <!-- 解构插槽参数并使用重命名 --> <template #default="{ item: todo, index }"> <div class="todo-item"> <span>{{ index + 1 }}. {{ todo.text }}</span> <span v-if="todo.completed">✓</span> </div> </template> </TodoList> </template> <script setup> import { ref } from 'vue' const todos = ref([ { text: '学习 Vue 3', completed: true }, { text: '学习 TypeScript', completed: false } ]) </script>

6. 与 Vue 2 的对比

特性Vue 2Vue 3
语法slot="name"v-slot:name#name
作用域插槽slot-scopev-slot统一处理
默认插槽匿名内容#default或匿名内容
动态插槽名有限支持完全支持

Vue 2 的旧语法(Vue 3 中已废弃):

vue

<!-- Vue 2 旧语法(Vue 3 中不支持) --> <BaseLayout> <template slot="header"> <h1>页头</h1> </template> <p slot="default">内容</p> <template slot="footer" slot-scope="props"> <p>页脚 {{ props.data }}</p> </template> </BaseLayout>

7. 注意事项

  1. 废弃的语法slotslot-scope属性在 Vue 3 中已废弃

  2. v-slot 只能用于<template>:不能直接用在普通元素上

  3. 默认插槽的两种写法

    vue

    <!-- 写法1:匿名内容 --> <Child>默认内容</Child> <!-- 写法2:明确指定 --> <Child> <template #default> 默认内容 </template> </Child>

总结

Vue 3没有废弃具名插槽,而是:

  1. 统一了语法:使用v-slot指令处理所有插槽

  2. 提供了简写#符号

  3. 增强了功能:更好的类型支持和动态插槽

  4. 废弃了旧语法:移除了slotslot-scope属性


这种改变让插槽语法更加一致和强大,特别是在使用 TypeScript 时提供更好的类型推断。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 13:14:43

Roots.ai团队推出GutenOCR:让AI既能读字又能精准定位

这项由Roots.ai团队开展的研究发表于2026年1月的arXiv预印本服务器&#xff0c;论文编号为arXiv:2601.14490v1。有兴趣深入了解技术细节的读者可以通过该编号查询完整论文。 当你用手机扫描一份文件时&#xff0c;是否曾经遇到过这样的困扰&#xff1a;软件能够识别出文字内容&…

作者头像 李华
网站建设 2026/5/24 21:31:26

Parameter Lab团队揭示:微调大模型如何意外引发“隐私坍塌“

当我们把大型语言模型比作一个刚入职的新员工时&#xff0c;微调就像是对其进行岗位培训。原本我们认为这种培训只会让AI变得更专业、更有用&#xff0c;就像教会新员工使用公司特定的软件或遵循特定的工作流程一样。然而&#xff0c;Parameter Lab、图宾根大学、达姆施塔特工业…

作者头像 李华
网站建设 2026/5/19 12:14:44

低分辨率图像目标检测性能验证:YOLOv8集成SPD-Conv的实战评测与优化

文章目录 SPD-Conv:革新低分辨率图像和小目标检测的新型CNN构建块完整教程 引言 1. SPD-Conv 技术背景与核心原理 1.1 传统CNN架构的局限性 1.2 SPD-Conv的设计理念 1.3 SPD-Conv的工作机制详解 步骤1:空间到深度(Space-to-Depth)转换 步骤2:非步长卷积处理 2. 环境配置与…

作者头像 李华
网站建设 2026/5/19 17:57:56

构建行星级AI系统:机器学习决策前沿

构建行星级AI系统&#xff1a;机器学习决策前沿 四月底&#xff0c;全球人工智能科学家齐聚线上&#xff0c;参加国际学习表征会议&#xff08;ICLR&#xff09;。该会议聚焦于人工智能、统计学和数据科学的进步&#xff0c;以及计算机视觉、计算生物学、语音识别、文本理解、游…

作者头像 李华
网站建设 2026/5/23 13:04:00

系统存储机制深度剖析:从Win11临时文件夹设计看微软存储架构演进

临时文件夹作为Windows系统的“临时工作台”&#xff0c;承载着程序运行缓存、安装包残留、网页临时文件等核心任务&#xff0c;其设计逻辑直接映射着微软存储架构的迭代思路。从Win95的分散存储到Win11的智能管控&#xff0c;临时文件夹的每一次优化&#xff0c;都是微软对“高…

作者头像 李华
网站建设 2026/5/23 10:45:24

用自然语言控制语音风格?CosyVoice2-0.5B功能深度体验

用自然语言控制语音风格&#xff1f;CosyVoice2-0.5B功能深度体验 你有没有试过这样操作&#xff1a;输入“用四川话说‘今天火锅吃爽了&#xff01;’”&#xff0c;系统立刻生成一段地道川音&#xff0c;语调上扬、尾音拖得恰到好处&#xff0c;连“巴适得板”的神韵都藏在语…

作者头像 李华