详解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 相关文章推荐
ext 列表页面关于多行查询的办法
Mar 25 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
Jun 06 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
Sep 11 Javascript
js 事件截取enter按键页面提交事件示例代码
Mar 04 Javascript
js实现的后台左侧管理菜单代码
Sep 11 Javascript
pc加载更多功能和移动端下拉刷新加载数据
Nov 07 Javascript
node跨域请求方法小结
Aug 25 Javascript
详解基于vue-router的动态权限控制实现方案
Sep 28 Javascript
bootstrap fileinput插件实现预览上传照片功能
Jan 23 Javascript
laydate只显示时分 不显示秒的功能实现方法
Sep 28 Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 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中GET变量的使用
2006/10/09 PHP
php页面缓存ob系列函数介绍
2012/10/18 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
python中尾递归用法实例详解
2015/04/28 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
信号生成及DFT的python实现方式
2020/02/25 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
Python如何实现单例模式
2016/06/03 面试题
学生未请假就回家检讨书
2014/09/22 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
内勤岗位职责范本
2015/04/13 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server