详解Vue中使用插槽(slot)、聚类插槽


Posted in Javascript onApril 12, 2019

一、基本的插槽

这里总结两点

  1. 如果不在子组件中使用插槽(slot),那么在子组件中写任何代码都是无效的的,不会显示
  2. (插槽默认值)如果子组件中没有插入任何代码的话就会显示组件插槽中的内容

slot 代表父组件往子组件中 插入的标签
这里就代表组件子组件中的 

<p>Dell</p>
<child>
<p>Dell</p>
</child>

这里如果是这样的

<child>	</child>

就会显示 <slot>默认内容</slot>中的默认内容 

二、聚类插槽

1、如果不在子组件中使用插槽(slot),那么在子组件中写任何代码都是无效的的,不会显示

2、(插槽默认值)如果子组件中没有插入任何代码的话就会显示组件插槽中的内容

这里如果是这样的

<child> </child>

就会显示<slot>默认内容</slot>中的 默认内容

3、聚类插槽

子组件这么写:

template:`<div>
<slot>默认内容</slot>
<p>content</p>
<slot>默认内容</slot>
</div>

然后这么引用:

<child>	
<div>header</div>				
<div>footer</div>
</child>

就会发现结果是

header
footer
content
header
 footer

这个不是我的本意,那么怎么办,这里就引入了聚类插槽
子组件:

template:`<div>
<slot name='header'>默认内容</slot>
<p>content</p>
<slot name='footer'>默认内容</slot>
</div>`

子组件引用:

<child>
<div slot='header'>header</div>
<div slot='footer'>footer</div>
</child>

不难发现给每个想要指定的子组件插槽添加 name属性,然后在引用中 slot中明确 是哪个即可也可以理解为引用中是用了两个插槽同时,默认内容同时适用在每个插槽

三、作用域插槽

这个是普通插槽的Demo

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Vue中使用插槽(slot)</title>
	<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
</head>
<body>
	<div id="root">
		<!-- 
			1、如果不在子组件中使用插槽(slot),那么在子组件中写任何代码都是无效的的,不会显示
			2、(插槽默认值)如果子组件中没有插入任何代码的话就会显示组件插槽中的内容 
			这里如果是这样的
				<child>
				</child>	
			就会显示 <slot>默认内容</slot>中的	
				默认内容	
		-->
		<child>
			<p>Dell</p>
		</child>
	</div>

	<script type="text/javascript">
		Vue.component('child',{
			/*
				slot 代表 父组件往子组件中 插入的标签
				这里就代表 组件子组件中的	<p>Dell</p>
					<child>
						<p>Dell</p>
					</child>
			*/
			template:`<div>
						<slot>默认内容</slot>
					 </div>`
		});

		var vm = new Vue({
			el:'#root',

		});
	</script>
</body>
</html>

这个是聚类插槽的Demo

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Vue中使用插槽(slot)</title>
	<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
</head>
<body>
	<div id="root">
		<!-- 
			1、如果不在子组件中使用插槽(slot),那么在子组件中写任何代码都是无效的的,不会显示
			2、(插槽默认值)如果子组件中没有插入任何代码的话就会显示组件插槽中的内容 
			这里如果是这样的
				<child>
				</child>	
			就会显示 <slot>默认内容</slot>中的	
				默认内容	
			3、聚类插槽
			子组件这么写:
				template:`<div>
					<slot>默认内容</slot>
					<p>content</p>
					<slot>默认内容</slot>
				 </div>`	
			然后这么引用:
					<child>
						<div>header</div>
						<div>footer</div>
					</child>
			就会发现结果是
				header
				footer
				content

				header
				footer
			这个不是我的本意,那么怎么办,这里就引入了聚类插槽
			子组件:
				template:`<div>
						<slot name='header'>默认内容</slot>
						<p>content</p>
						<slot name='footer'>默认内容</slot>
					 </div>`
			子组件引用:
				<child>
					<div slot='header'>header</div>
					<div slot='footer'>footer</div>
				</child>
			不难发现给每个想要指定的子组件插槽添加 name属性,
			然后在引用中 slot中明确 是哪个即可
			也可以理解为引用中是用了两个插槽
			同时,默认内容同时适用在每个插槽

		-->
		<child>
			<div slot='header'>default header</div>
			<div slot='footer'>default footer</div>
		</child>
	</div>

	<script type="text/javascript">
		Vue.component('child',{
			/*
				slot 代表 父组件往子组件中 插入的标签
				这里就代表 组件子组件中的	<p>Dell</p>
					<child>
						<p>Dell</p>
					</child>
			*/
			template:`<div>
						<slot name='header'>默认内容</slot>
						<p>content</p>
						<slot name='footer'>默认内容</slot>
					 </div>`
		});

		var vm = new Vue({
			el:'#root',

		});
	</script>
</body>
</html>

以上所述是小编给大家介绍的Vue中使用插槽(slot)、聚类插槽详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript学习笔记之获取当前目录的实现代码
Dec 14 Javascript
js 利用className得到对象的实现代码
Nov 15 Javascript
Prototype源码浅析 Number部分
Jan 16 Javascript
一个基于jquery的文本框记数器
Sep 19 Javascript
图片延迟加载的实现代码(模仿懒惰)
Mar 29 Javascript
JavaScript var声明变量背后的原理示例解析
Oct 12 Javascript
jquery 插件实现多行文本框[textarea]自动高度
Mar 04 Javascript
JS替换字符串中空格方法
Apr 17 Javascript
纯JS代码实现一键分享功能
Apr 20 Javascript
浅析JavaScript中break、continue和return的区别
Nov 30 Javascript
webpack4 css打包压缩问题的解决
May 18 Javascript
基于vue实现圆形菜单栏组件
Jul 05 Javascript
JS实现li标签的删除
Apr 12 #Javascript
vue中多路由表头吸顶实现的几种布局方式
Apr 12 #Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
Apr 11 #Javascript
如何检查一个对象是否为空
Apr 11 #Javascript
vue项目创建并引入饿了么elementUI组件的步骤
Apr 11 #Javascript
重学JS 系列:聊聊继承(推荐)
Apr 11 #Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 #Javascript
You might like
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
vue中轮训器的使用
2019/01/27 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
python合并同类型excel表格的方法
2018/04/01 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
德国综合购物网站:OTTO
2018/11/13 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
怎样声明接口
2014/09/19 面试题
经济学博士求职自荐信范文
2013/11/23 职场文书
高级护理专业毕业生推荐信
2013/12/25 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
经济贸易系求职信
2014/08/04 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
庭外和解协议书
2016/03/23 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android