详解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 相关文章推荐
LBS blog sql注射漏洞[All version]-官方已有补丁
Aug 26 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
Oct 20 Javascript
StringTemplate遇见jQuery冲突的解决方法
Sep 22 Javascript
js实现的tab标签切换效果代码分享
Aug 25 Javascript
jQuery异步提交表单的两种方式
Sep 13 Javascript
浅谈js中的引用和复制(传值和传址)
Sep 18 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
Sep 04 Javascript
js封装成插件_Canvas统计图插件编写实例
Sep 12 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
May 16 Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 Javascript
jQuery实现移动端笔触canvas电子签名
May 21 jQuery
vue+animation实现翻页动画
Jun 29 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 class中public,private,protected的区别以及实例分析
2013/06/18 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
PDO::inTransaction讲解
2019/01/28 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
JavaScript修改css样式style
2008/04/15 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
python如何爬取个性签名
2018/06/19 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
python代码能做成软件吗
2020/07/24 Python
python实现简单猜单词游戏
2020/12/24 Python
jupyter 添加不同内核的操作
2021/02/06 Python
保护环境演讲稿
2014/05/10 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
新员工考核评语
2014/12/31 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
Linux安装apache服务器的配置过程
2021/11/27 Servers