【Vue3 for beginner】普通插槽、具名插槽、作用域插槽

server/2024/11/26 23:37:21/

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗插槽

在 Vue 3 中,插槽(Slots)是一个强大的功能,可以帮助我们在组件中定义可重用的内容。插槽分为普通插槽、具名插槽和作用域插槽。

💻代码

普通插槽

普通插槽允许你在父组件中插入内容到子组件的指定位置,是没有name属性的。
App.vue

<template><div><h1>我是父组件的H1标题</h1><Child><p>这段代码是在父组件写的,这是插入到子组件的内容。</p></Child><Child></Child></div>
</template><script>
import Child from './Child.vue';export default {components: { Child },name: 'Parent'
}
</script>

Chile.vue

javascript"><template><div><h2>这是子组件H2标题</h2><slot></slot> <!-- 普通插槽 --></div></template><script>export default {name: 'Child'}</script>

效果:
在这里插入图片描述

具名插槽

具名插槽允许你在子组件中定义多个插槽,并通过名称来区分它们。
App.vue

javascript"><template><div><h1>父组件</h1><Child><template v-slot:header></template><p>这是插入到子组件的主要内容,当父组件没有默认内容时才会展示子组件内容</p><template v-slot:footer><p>这是底部默认内容</p></template></Child></div>
</template><script>
import Child from './Child.vue';export default {components: { Child },name: 'Parent'
}
</script>

Child.vue

javascript"><template><div><h2>子组件</h2><slot name="header"><ul><li>header内容</li><li>header内容</li><li>header内容</li></ul></slot> <!-- 具名插槽 --><slot></slot> <!-- 默认插槽 --><slot name="footer"><ul><li>footer内容</li><li>footer内容</li><li>footer内容</li></ul></slot> <!-- 具名插槽 --></div>
</template><script>
export default {name: 'Child'
}
</script>
  • 父组件引用子组件,父组件没有默认内容时会展示子组件显示的内容

作用域插槽

作用域插槽允许父组件访问子组件中的数据。这种插槽可以将数据传递给父组件,使父组件能够使用这些数据。
App.vue

javascript"><template><div><h1>父组件</h1><Child><template v-slot:student-slot="{ student }"><div class="student-info"><h3>学生信息:</h3><p class="student-name">姓名: {{ student.name }}</p><p class="student-age">年龄: {{ student.age }}</p><p class="student-grade">年级: {{ student.grade }}</p></div></template></Child></div>
</template><script>
import Child from './Child.vue';export default {components: { Child },name: 'Parent'
}
</script><style scoped>
h1 {color: #333; /* 主标题颜色 */
}.student-info {border: 1px solid #4CAF50; /* 边框颜色 */padding: 10px;border-radius: 5px;background-color: #f9f9f9; /* 背景颜色 */margin-top: 10px;
}.student-name {font-weight: bold; /* 姓名加粗 */color: #2196F3; /* 姓名颜色 */
}.student-age,
.student-grade {color: #555; /* 年龄和年级颜色 */
}
</style>

Child.vue

javascript"><template><div><h2>子组件</h2><slot name="student-slot" :student="student"><p>没有学生信息可显示。</p></slot></div>
</template><script>
import { ref } from 'vue';export default {name: 'Child',setup() {// 定义一个学生对象const student = ref({name: '张三',age: 20,grade: '大二'});return {student};}
}
</script>

解释:

 <template v-slot:student-slot="{ student }">引用插槽时,冒号后面是插槽的name

student-slot可以简写为#student-slot,在UI库中常见这样的简写,例如element-plus可以看到大量的#default。

🔍理解

该怎么理解父子组件的关系?

  • 父子组件的关系就像孩子的压岁钱,孩子的压岁钱可能有很多想法,当父亲同意时孩子才能去实现。如果父亲说压岁钱只能买书,那小孩想要买玩具就不会被实现。
  • 记忆:子组件中插槽的name就是小孩的名字,一个父亲可能有很多小孩,要给每个孩子指定行为用他们用name来指定;

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述


http://www.ppmy.cn/server/145179.html

相关文章

搜维尔科技:多画面显示3D系统解决方案,数据孪生可视化大屏3D展示技术

集成多画面系统 集成多画面系统解决方案 1.适合多个用户的紧凑型入门级解决方案 2.会议室功能、审批功能、3D模型讨论等多种使用可能性 3.配有组合设备&#xff0c;方便整合 CAVE 多画面显示系统 1.专业的大屏幕多画面解决方案 2.墙壁、天花板和地板三面CAVE 3.专为沉浸…

免费实用在线AI工具集合 - 加菲工具

免费在线工具-加菲工具 https://orcc.online/ 在线录屏 https://orcc.online/recorder 时间戳转换 https://orcc.online/timestamp Base64 编码解码 https://orcc.online/base64 URL 编码解码 https://orcc.online/url Hash(MD5/SHA1/SHA256…) 计算 https://orcc.online/h…

初试无监督学习 - K均值聚类算法

文章目录 1. K均值聚类算法概述2. k均值聚类算法演示2.1 准备工作2.2 生成聚类用的样本数据集2.3 初始化KMeans模型对象&#xff0c;并指定类别数量2.4 用样本数据训练模型2.5 用训练好的模型生成预测结果2.6 输出预测结果2.7 可视化预测结果 3. 实战小结 1. K均值聚类算法概述…

Python 数据分析核心库大全!

&#xff08;欢迎关注我的视频号&#xff09; &#x1f447;我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299&#xff0c;限时特价2杯咖啡&#xff0c;满100人涨10元。 大家好&#xff01;我是菜鸟哥&#xff01; 今天我们来聊点干货&#xff1a;Python 数据…

算法日记 33 day 动态规划(打家劫舍,股票买卖)

今天来看看动态规划的打家劫舍和买卖股票的问题。 上题目&#xff01;&#xff01;&#xff01;&#xff01; 题目&#xff1a;打家劫舍 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金…

高标准农田智慧农业系统建设方案

1 项目概述 1.1 建设背景 我国是农业大国,近30年来农田高产量主要依靠农药化肥的大量投入,大部分化肥和水资源没有被有效利用而随地弃置,导致大量养分损失并造成环境污染。我国农业生产仍然以传统生产模式为主,传统耕种只能凭经验施肥灌溉,不仅浪费大量的人力物力,也对环…

僵尸毁灭工程 服务搭建 联机教程 无需公网IP、服务器

主要内容 什么是僵尸毁灭工程 搭建该服务&#xff0c;需要准备什么 详细步骤 1.下载并运行 SteamCMD 2.下载僵尸毁灭服务端 3.运行 MoleSDN 进行异地联机 4.小伙伴皮蛋加入鼠鼠服务器 完成联机 什么是僵尸毁灭工程 一款由The Indie Stone开发的开放世界生存模拟游戏。游…

WPF中如何让Textbox显示为一条直线

由于Textbox直接使用是一条直线 设置如下代码 可以让Textbox变为直线输入 <Style TargetType"TextBox"x:Key"UsernameTextBoxStyle"><Setter Property"Template"><Setter.Value><ControlTemplate TargetType"{x:Typ…