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

【Vue3】具名插槽

【Vue3】具名插槽

  • 背景
  • 简介
  • 开发环境
  • 开发步骤及源码

背景

随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。

简介

本文介绍 Vue3 中如何使用具名插槽。

Vue 中的插槽包含三类:

  • 默认插槽
  • 具名插槽
  • 作用域插槽

具名插槽,顾名思义是指带有名字的插槽,一个组件中只能包含一个默认插槽,当存在多个插槽时便要使用具名插槽。

注意:默认插槽实际上也是有名称的,为 default

开发环境

分类名称版本
操作系统WindowsWindows 11
IDEVisual Studio Code1.91.1

开发步骤及源码

1> 在【Vue3】默认插槽 基础上修改带插槽的功能组件。

<template><div class="store"><slot name="s-title">默认标题</slot><hr><slot name="s-content">默认内容</slot></div>
</template><script setup lang="ts">
</script><style scoped lang="scss">
.store {background-color: green;box-shadow: 0 0 10px;color: white;padding: 10px;width: 300px;
}
</style>

具名插槽即在 <slot> 标签中添加 name 属性,<slot> 标签中的内容为默认显示内容,当父组件未指定插槽位置应该显示的内容时,就显示此默认内容。

2> 修改 Vue 根组件 src/App.vue,引用自定义功能组件。

<template><div class="root"><h1 ref="title">App组件</h1><div class="stores"><Store><template v-slot:s-title>无需列表</template><template v-slot:s-content><ul><li v-for="film in films" :key="film.id">{{ film.name }}</li></ul></template></Store><Store><template #s-content><ol><li v-for="film in films" :key="film.id">{{ film.name }}</li></ol></template><template #s-title>有序列表</template></Store><Store></Store></div></div>
</template><script setup lang="ts">
import Store from './components/Store.vue'
import { reactive } from 'vue'const films = reactive([{ id: '001', name: '哈利波特与魔法石'},{ id: '002', name: '哈利波特与密室'},{ id: '003', name: '哈利波特与阿兹卡班的囚徒'},{ id: '004', name: '哈利波特与凤凰社'},
])
</script><style scoped lang="scss">
.root {background-color: orange;box-shadow: 0 0 10px;padding: 20px;h1 {text-align: center;}.stores {display: flex;justify-content: space-evenly;}
}
</style>

父组件需要将动态显示内容包裹在 <template> 标签内,且在 <template> 标签内指定插槽名称,格式:v-slot:插槽名称,简写:#插槽名称。因为已通过插槽名称指定内容显示区域,所以 <template> 标签顺序不要求与组件定义的插槽顺序保持一致。

3> 执行命令 npm run dev 启动应用,浏览器访问:http://localhost:5173/
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 后端笔记(1)--javaweb简介
  • 【玩转python】入门篇day14-函数
  • Laravel序列化解码:深入Eloquent模型的序列化机制
  • 如何构建自己的交易机器人开发环境
  • 【机器学习】逻辑损失函数的基本概念和探索为什么平方误差损失函数不适用于逻辑回归以及探索逻辑损失函数
  • 基于supervisor制作基于环境变量配置的redis
  • MyBatis动态代理和映射器
  • 橙篇AI做产品经理,比Kimi爽多了
  • gpio的使用,---->使用sysfs 控制gpio(第二节)
  • RabbitMQ:MQ的可靠性
  • C#实现数据采集系统-系统优化服务封装
  • 捷行推出2024年8月专属福利活动
  • TDS传感器 - 从零开始认识各种传感器【二十五期】
  • websocket实现简易聊天室
  • Python连接数据库:JDBC不是唯一选择!
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • ES6系列(二)变量的解构赋值
  • express.js的介绍及使用
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • KMP算法及优化
  • Linux各目录及每个目录的详细介绍
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 数据科学 第 3 章 11 字符串处理
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​数据结构之初始二叉树(3)
  • ###项目技术发展史
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1)无线电失控保护(二)
  • (5)STL算法之复制
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二)linux使用docker容器运行mysql
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (翻译)terry crowley: 写给程序员
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (一)Dubbo快速入门、介绍、使用
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • ***原理与防范
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • . NET自动找可写目录
  • .Net Core缓存组件(MemoryCache)源码解析
  • .Net mvc总结
  • .NET 给NuGet包添加Readme
  • .NET8使用VS2022打包Docker镜像
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • @31省区市高考时间表来了,祝考试成功
  • @RequestMapping处理请求异常
  • @拔赤:Web前端开发十日谈
  • []我的函数库