详解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中this关键字使用方法详解
Mar 08 Javascript
浏览器的JavaScript引擎的识别方法
Oct 20 Javascript
css配合jquery美化 select
Nov 29 Javascript
JQuery 图片滚动轮播示例代码
Mar 24 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
javascript Array 数组常用方法
Apr 05 Javascript
Javascript点击按钮随机改变数字与其颜色
Sep 01 Javascript
footer定位页面底部(代码分享)
Mar 07 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
May 04 Javascript
axios对请求各种异常情况处理的封装方法
Sep 25 Javascript
vue-列表下详情的展开与折叠案例
Jul 28 Javascript
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
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
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
php UBB 解析实现代码
2011/11/27 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
FLASH 广告之外的链接
2008/12/16 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
Sanic框架配置操作分析
2018/07/17 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
python实现的发邮件功能示例
2019/09/11 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
学校安全检查制度
2014/01/27 职场文书
2014道德模范事迹材料
2014/02/16 职场文书
离职证明标准格式
2014/09/15 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers