详解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 import css实例代码
Jul 18 Javascript
把jQuery的类、插件封装成seajs的模块的方法
Mar 12 Javascript
简单分析javascript面向对象与原型
May 21 Javascript
js带点自动图片轮播幻灯片特效代码分享
Sep 07 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
利用Vue.js指令实现全选功能
Sep 08 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
教你一步步用jQyery实现轮播器
Dec 18 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
Jan 22 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 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
杏林同学录(一)
2006/10/09 PHP
php下删除字符串中HTML标签的函数
2008/08/27 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
SVG实现时钟效果
2018/07/17 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
带你了解python装饰器
2017/06/15 Python
flask中过滤器的使用详解
2018/08/01 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
2016年寒假学习心得体会
2015/10/09 职场文书
Python进程间的通信之语法学习
2022/04/11 Python
Python 统计序列中元素的出现频度
2022/04/26 Python