详解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 相关文章推荐
一起来写段JS drag拖动代码
Dec 09 Javascript
js Select下拉列表框进行多选、移除、交换内容的具体实现方法
Aug 13 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
Feb 07 Javascript
AngularJS内置指令
Feb 04 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
Nov 01 Javascript
基于JavaScript怎么实现让歌词滚动播放
Nov 03 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
Jul 01 Javascript
基于Bootstrap框架实现图片切换
Mar 10 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
Aug 08 Javascript
js实现input密码框显示/隐藏功能
Sep 10 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
Dec 16 Javascript
36个正则表达式(开发效率提高80%)
Nov 17 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
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
Javascript 面向对象 重载
2010/05/13 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
python中去空格函数的用法
2014/08/21 Python
python机器学习理论与实战(二)决策树
2018/01/19 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python实现连续图文识别
2018/12/18 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
python实现视频读取和转化图片
2019/12/10 Python
Python多线程thread及模块使用实例
2020/04/28 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
大学生职业生涯规划书模板
2014/01/03 职场文书
毕业生求职信的经典写法
2014/01/31 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
企业百日安全活动总结
2015/05/07 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA