详解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 相关文章推荐
基于jquery的让textarea自适应高度的插件
Aug 03 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
Aug 14 Javascript
用原生js做个简单的滑动效果的回到顶部
Oct 15 Javascript
js实现类似菜单风格的TAB选项卡效果代码
Aug 28 Javascript
轻松实现javascript数据双向绑定
Nov 11 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
Apr 11 Javascript
JS原型链怎么理解
Jun 27 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
Sep 20 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
Jul 03 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
Jan 14 Javascript
详解vue的数据劫持以及操作数组的坑
Apr 18 Javascript
js实现带有动画的返回顶部
Aug 09 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
php adodb操作mysql数据库
2009/03/19 PHP
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
php 短链接算法收集与分析
2011/12/30 PHP
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
Extjs中常用表单介绍与应用
2010/06/07 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
python删除服务器文件代码示例
2018/02/09 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
餐饮业创业计划书范文
2014/01/06 职场文书
个人培训自我鉴定
2014/03/28 职场文书
分公司任命书
2014/06/06 职场文书
教师党员个人自我评价
2015/03/04 职场文书
校长师德表现自我评价
2015/03/04 职场文书
怎样写家长意见
2015/06/04 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server