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

Vue-插槽 Slots

文章目录

  • 前言
  • 什么叫插槽
  • 简单插槽
  • 指定默认值
  • 多个插槽根据父级别名称指定区域显示(具名插槽)
  • 作用域插槽

前言

本篇文章不做过多的讲解与说明,只记录个人实验测试案例。

详见:vue 官方文档 插槽 slots

什么叫插槽

之前的博客中,父级组件可以使用props向子级组件中传递StringArrayObjectFunction等数据类型。如果需要父级元素向子级元素中传递JavaScript值,并要求子级模板进行渲染呢?此时该如何做?

下面来说插槽的用法汇总。

简单插槽

编写一个父级模板,并引入子级模板ComponentSoltChild.vue模板,并向其中传递模板片段

ComponentSoltFather.vue

<template><h2>父级模板</h2><ComponentSoltChild><h2>父级传递子级模板数据</h2> <!-- 插槽数据入口 --><div style="color: red;">666666</div></ComponentSoltChild>
</template>
<script>
// 引用子级模板组件
import ComponentSoltChild from './ComponentSoltChild.vue';
export default{components:{// 注册子级模板组件ComponentSoltChild}
}
</script>

然后定义一个子级模板,并标记父级传递子级模板语法需要渲染的位置。

ComponentSoltChild.vue

<template><h2>子级模板</h2><!-- 插槽出口,位置不同渲染的区域也不同 --><slot></slot>
</template>

查看显示效果:
在这里插入图片描述

指定默认值

如果在父级组件模板中,并未传递对应的模板语法片段,此时需要让自己的插槽中展示默认的数据信息。

直接修改子级组件模板中的插槽内容,如下所示:

ComponentSoltChild.vue

<template><h2>子级模板</h2><slot>这是默认显示项</slot>
</template>

将父级组件中传递子级模板中的片段删除,查看显示效果:

ComponentSoltFather.vue

<template><h2>父级模板</h2><ComponentSoltChild><!-- 插槽数据入口 --><!-- <h2>父级传递子级模板数据</h2> <div style="color: red;">666666</div> --></ComponentSoltChild>
</template>
<script>
import ComponentSoltChild from './ComponentSoltChild.vue';
export default{components:{ComponentSoltChild}
}
</script>

显示效果如下所示:
在这里插入图片描述

多个插槽根据父级别名称指定区域显示(具名插槽)

如果直接在子级模板中,定义多个插槽,则会导致:

每个父级传递的模板标签作为值,放入一个插槽标签中进行渲染,并不会实现指定渲染。

如下所示,只修改子级组件模板:

ComponentSoltChild.vue

<template><slot></slot><h2>子级模板</h2><slot></slot>
</template>

在这里插入图片描述


【思考】如果我想让父级传入的某个显示在第一个solt中,另一个显示在第二个solt中,如何实现?

可以在父级中传递的模板片段上,定义别名称。
再在子级模板中,指定具体的别名称实现一对一渲染。

在这里插入图片描述
此时则需要先修改父级模板中传入的模板片段信息,指定别名称。

ComponentSoltFather.vue
在其中针对片段,采取v-slot:xxx定义唯一别名称。

<template><h2>父级模板</h2><ComponentSoltChild><!-- 插槽数据入口 增加模板别名称--><template v-slot:one ><h2>父级传递子级模板数据</h2> </template><template v-slot:two ><div style="color: red;">666666</div></template></ComponentSoltChild>
</template>
<script>
import ComponentSoltChild from './ComponentSoltChild.vue';
export default{components:{ComponentSoltChild}
}
</script>

修改子级组件中的显示项,对应的<solt>标签,与父级的片段别名称实现绑定。

ComponentSoltChild.vue
<solt>标签,使用name="xxx"与父级中定义的别名称进行绑定。

<template><slot name="one">这是默认显示项</slot><h2>子级模板</h2><slot name="two">这是默认显示项</slot>
</template>

显示效果如下所示:
在这里插入图片描述
【扩展】v-slot: 可以缩写为 #
修改父级组件中传递子级模板的模板名语法格式,如下:

ComponentSoltFather.vue

<template><h2>父级模板</h2><ComponentSoltChild><!-- 插槽数据入口 增加模板别名称--><!-- v-slot:xxx 可以缩写为 #xxx --><template #one ><h2>父级传递子级模板数据</h2> </template><template v-slot:two ><div style="color: red;">666666</div></template></ComponentSoltChild>
</template>
<script>
import ComponentSoltChild from './ComponentSoltChild.vue';
export default{components:{ComponentSoltChild}
}
</script>

再次查看显示效果。

官网图片:
在这里插入图片描述

作用域插槽

后续补充

相关文章:

  • 全方位·多层次·智能化,漫途水库大坝安全监测方案
  • idea常用设置
  • 第四章-决策树
  • 用人工智能写2024年高考作文
  • MFC 教程-回车时窗口退出问题
  • Springboot集成SSE消息推送
  • 浅谈word格式:.doc和.docx的优缺点及区别
  • 7.数据集处理库Hugging Face Datasets
  • 2024泰迪智能科技大数据实训室方案
  • C# Winform内嵌窗体(在主窗体上显示子窗体)
  • 二十、OOP之理解《匿名内部类》
  • boost asio异步服务器(3)增加发送队列实现全双工通信
  • 离散数学答疑 6
  • 為什麼使用代理API?
  • 数组中的map方法
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • create-react-app做的留言板
  • E-HPC支持多队列管理和自动伸缩
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • express.js的介绍及使用
  • Just for fun——迅速写完快速排序
  • Leetcode 27 Remove Element
  • mongo索引构建
  • mysql 5.6 原生Online DDL解析
  • Mysql数据库的条件查询语句
  • REST架构的思考
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Theano - 导数
  • vue脚手架vue-cli
  • Web Storage相关
  • 从零开始在ubuntu上搭建node开发环境
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 关于springcloud Gateway中的限流
  • 前言-如何学习区块链
  • 区块链分支循环
  • 使用agvtool更改app version/build
  • 网页视频流m3u8/ts视频下载
  • 用Python写一份独特的元宵节祝福
  • # 透过事物看本质的能力怎么培养?
  • #14vue3生成表单并跳转到外部地址的方式
  • #include到底该写在哪
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (1)Nginx简介和安装教程
  • (1)常见O(n^2)排序算法解析
  • (11)MSP430F5529 定时器B
  • (Matlab)使用竞争神经网络实现数据聚类
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (面试必看!)锁策略
  • (四)React组件、useState、组件样式
  • (算法)N皇后问题
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。