网站首页 > 技术文章 正文
在 2.6.0中,vue 为具名插槽和作用于插槽引入了一个新的统一语法:v-slot。它取代了 slot 和 slot-scope 在新版中的应用。
本篇文章主要介绍在 vue3 中插槽的使用。
一、v-slot 介绍
v-slot 只能用在 template 或组件上使用,否则就会报错。
v-slot 也是其中一种指令。
使用示例:
//父组件代码
<child-com>
<template v-slot:nameSlot>
插槽内容
</template>
</child-com>
//组件模板
<slot name="nameSlot"></slot>
v-slot 的语法,简化 slot、slot-scope 作用域插槽的功能,相比更加强大,代码效率更高。
二、匿名插槽
当组件中只有一个插槽的时候,可以不设置 slot 的 name 属性,v-slot 后可以不带参数,但是 v-slot 在没有设置 name 属性的插槽口也会带有隐含的 “default”。
匿名插槽使用:
//组件调用
<child-com>
<template v-slot>
插槽内容
</template>
</child-com>
//组件模板
<slot ></slot>
虽然 v-slot 没有设置参数,但不能删除掉 ,否则插槽内容无法正常渲染。
三、具名插槽
一个组件中有多个插槽的时候,如果没有设置 v-slot 属性值,会默认把元素插到没有设置 name 属性值的 slot 组件中,为了把对应的元素放到指定的位置,就需要借助 v-slot 和 name 属性,把内容对应起来。
具名插槽使用:
//父组件
<child-com>
<template v-slot:header>
头部
</template>
<template v-slot:body>
内容
</template>
<template v-slot:footer>
脚
</template>
</child-com>
//子组件
<div>
<slot name="header"></slot>
<slot name="body"></slot>
<slot name="footer"></slot>
</div>
具名插槽缩写
v-slot 与 v-bind、v-on 指令一样,也存在缩写。可以把 v-slot: 简写为 # 号。
如上述 v-slot:footer 可以简写为 #footer 。
上述的父组件代码可以简化为:
<child-com>
<template #header>
头部
</template>
<template #body>
内容
</template>
<template #footer>
脚
</template>
</child-com>
注意:和其他指令一样,只有存在参数时,才可以简写,否则是无效的。
四、作用域插槽
有时让插槽内容能够访问子组件中才有的数据是很有用的。当一个组件被用来渲染一个项目数组时,这是一个常见的情况,我们希望能够自定义每个项目的渲染方式。
要使子组件上的属性在插槽内容上可用,需要给 slot 绑定一个属性。然后在 v-slot 处接收并定义提供插槽 props 名字。
使用示例:
//
<child-com>
<template v-slot:header="slotProps">
插槽内容--{{ slotProps.item }} 序号--{{ slotProps.index }}
</template>
</child-com>
//子组件代码
<template>
<div v-for="(item, index) in arr" :key="index">
<slot :item="item" name="header" :index="index"></slot>
</div>
</template>
<script setup>
const arr = ['1111', '2222', '3333']
</script>
五、动态插槽名
v-slot 指令参数也可以是动态的,用来定义动态插槽名。
如:
<child-com>
<template v-slot:[dd()]>
动态插槽名
</template>
</child-com>
<script setup>
const dd = () => {
return 'hre'
}
此处使用的是函数,也可以直接使用变量。
猜你喜欢
- 2024-12-25 css兼容性问题及一些常见问题汇总大全,赶快收藏!
- 2024-12-25 指甲变黑了是身体出了问题吗,黑指甲是否有癌变的可能?
- 2024-12-25 如何学习网络前端开发 网络前端培训
- 2024-12-25 基于vue实现可视化拖拽编辑器,页面生成工具,提升前端开发效率
- 2024-12-25 完美收藏 | 高校新媒体运营最实用工具大全!
- 2024-12-25 潮流的博美宠物狗名字大全走在时尚前端-可爱点
- 2024-12-25 前端开发效率工具推荐(二) 前端最好用的开发工具
- 2024-12-25 2016浏览器内核css前缀大全 ie浏览器css前缀
- 2024-12-25 电子围栏系统常见故障解决方法 电子围栏系统常见故障解决方法有哪些
- 2024-12-25 web设计师、前端工程师的终端设备分辨率大全
你 发表评论:
欢迎- 501℃几个Oracle空值处理函数 oracle处理null值的函数
- 494℃Oracle分析函数之Lag和Lead()使用
- 494℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 482℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 473℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 468℃【数据统计分析】详解Oracle分组函数之CUBE
- 453℃Oracle有哪些常见的函数? oracle中常用的函数
- 449℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
-
- Spring Boot跨域难题终结者:3种方案,从此告别CORS噩梦!
- 京东大佬问我,SpringBoot为什么会出现跨域问题?如何解决?
- 在 Spring Boot3 中轻松解决接口跨域访问问题
- 最常见五种跨域解决方案(常见跨域及其解决方案)
- Java Web开发中优雅应对跨域问题(java跨域问题解决办法)
- Spring Boot解决跨域最全指南:从入门到放弃?不,到根治!
- Spring Boot跨域问题终极解决方案:3种方案彻底告别CORS错误
- Spring Cloud 轻松解决跨域,别再乱用了
- Github 太狠了,居然把 "master" 干掉了
- IntelliJ IDEA 调试 Java 8,实在太香了
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)