news 2026/6/10 16:25:50

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/6/10 13:06:38

基于STM32的智能楼梯灯系统

目录系统概述硬件组成核心功能软件设计应用场景优势特点源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 基于STM32的智能楼梯灯系统是一种结合嵌入式控制与传感器技术的自动化照明解决方案。该系统通过实时监测人体活动&#…

作者头像 李华
网站建设 2026/6/10 13:08:59

弗吉尼亚大学等机构突破:AI医生实现十三种语言个性化诊疗

这项由弗吉尼亚大学联合印度理工学院巴特那分校、阿联酋穆罕默德本扎耶德人工智能大学等多所知名院校共同完成的研究发表于2025年1月19日&#xff0c;论文编号为arXiv:2601.13262v1。对这个研究领域感兴趣的读者可以通过该编号查询完整论文。 当医生面对不同国家的病人时&#…

作者头像 李华
网站建设 2026/6/9 23:11:07

哥本哈根大学新发现:AI事实核查中,证据比解释更重要

这项由丹麦哥本哈根大学计算机科学系与瑞典林雪平大学合作完成的研究发表于2025年&#xff0c;论文编号为arXiv:2601.11387v1&#xff0c;为我们揭示了在AI辅助事实核查过程中&#xff0c;人们究竟如何使用和评估AI系统提供的信息。在当今信息爆炸的时代&#xff0c;人们越来越…

作者头像 李华
网站建设 2026/6/10 13:04:58

FlashLabs首创语音对话黑科技:几秒钟录音就能让AI学会你的声音

这项由FlashLabs公司开发的突破性研究于2026年1月发表在计算机科学期刊上&#xff0c;文章编号为arXiv:2601.11141v1。有兴趣深入了解的读者可以通过该编号查询完整论文。 在科幻电影中&#xff0c;我们经常看到这样的场景&#xff1a;主人公只需要说几句话&#xff0c;AI助手就…

作者头像 李华
网站建设 2026/6/10 13:14:16

佐治亚理工学院团队破解AI智能体融合难题

这项由佐治亚理工学院联合达特茅斯学院和圣母大学开展的研究发表于2026年1月&#xff0c;论文编号为arXiv:2601.13572v1。有兴趣深入了解的读者可以通过该编号查询完整论文。 在当今人工智能的世界里&#xff0c;我们经常会遇到这样一个有趣的现象&#xff1a;有些AI智能体就像…

作者头像 李华
网站建设 2026/6/10 15:10:09

基于激活函数替换和ONNX-Simplifier的ONNX模型部署性能提升指南

前言 在深度学习技术飞速发展的今天,模型部署已成为连接算法创新与实际应用的桥梁。然而,将训练好的模型高效地部署到各种硬件平台(如云端服务器、边缘设备、移动端等)上,并确保其能够以低延迟、高吞吐量运行,一直是工程师们面临的重大挑战。ONNX(Open Neural Network …

作者头像 李华