Vue.js slot插槽
1.插槽的基本用法
- 组件的插槽允许用户将其他组件或者html片段插入到组件当中
// App.vue
<template>
<div id="app">
<Child>
<!-- 在子组件中插入标签 -->
<h2>我是插入的h2</h2>
</Child>
</div>
</template>
- 子组件需要一个slot来接收父组件传入的组件或者html片段
// 子组件
<template>
<div id="child">
<!-- slot标签将被插入的标签替代 -->
<slot></slot>
<h2>我是Hello组件</h2>
</div>
</template>
渲染结果:
<div id="app">
<div id="child">
<h2>我是插入的h2</h2>
<h2>我是Child组件</h2>
</div>
</div>
这种插槽只有一个,被称为匿名插槽。
2.具名插槽
- 如果子组件有多个插槽,就需要为每个插槽添加一个标识,即name属性,方便对号入座
<template>
<div id="child">
<slot name="top"></slot>
<h2>我是Child组件</h2>
<slot name="bottom"></slot>
</div>
</template>
- 父组件插入标签时 通过设定slot属性值,来关联对应的插槽
<template>
<div id="app">
<Child>
<!-- 在子组件中插入标签 -->
<h2 slot="top">我是插入的h2</h2>
<h5 slot="bottom">我是插入的h5</h5>
</Child>
</div>
</template>
渲染结果:
<div id="app">
<div id="child">
<h2>我是插入的h2</h2>
<h2>我是Child组件</h2>
<h5>我是插入的h5</h5>
</div>
</div>
3.插槽的默认内容
- slot标签内可以写html代码,如果这个插槽没有被替换,会显示该插槽内的html内容,反之会被替换
<template>
<div id="child">
<slot name="top">
<p>我是top插槽没使用的时候展示的内容</p>
</slot>
<h2>我是Child组件</h2>
<slot name="bottom"></slot>
</div>
</template>
// App.vue
<template>
<div id="app">
<Child>
<h5 slot="bottom">我是插入的h5</h5>
</Child>
</div>
</template>
渲染结果:
<div id="app">
<div id="child">
<p>我是top插槽没使用的时候展示的内容</p>
<h2>我是Child组件</h2>
<h5>我是插入的h5</h5>
</div>
</div>
5.slot-scope(作用域插槽)
- 这个功能通用来为slot标签绑定数据,通常一个组件渲染数据有默认的样式,如果用户不满意,可以提供插槽,并绑定相关数据,使用户可以拿到之前的数据并用自己的方式渲染
// 子组件
<template>
<div id="child">
<!-- 在slot标签中2个数据 -->
<slot name="top" :p1="p1" :p2="p2">
<h3>{{p1.name}}</h3>
<h3>{{p1.age}}岁</h3>
<h3>{{p2.name}}</h3>
<h3>{{p2.age}}岁</h3>
</slot>
<h2>我是Hello组件</h2>
<slot name="bottom"></slot>
</div>
</template>
<script>
export default {
data () {
return {
p1: {name: '乔治',age: 4},
p2 :{name: '佩琪',age: 8}
}
}
}
</script>
- 父组件在替代slot的标签中添加 slot-scope属性,表示接受当前slot绑定的数据。因为slot标签上可能绑定了多个数据,所以vue将所有的数据都包裹在一个对象内,可以通过这个对象的属性名来访问对应的数据。
// App.vue
<template>
<div id="app">
<Hello>
<template slot-scope="{p1,p2}" slot="top">
<p>{{p1.name}}</p>
<p>{{p1.age}}岁</p>
<p>{{p2.name}}</p>
<p>{{p2.age}}岁</p>
</template>
<h5 slot="bottom">我是插入的h5</h5>
</Hello>
</div>
</template>
6.新的插槽语法(2.6.0)
- 从2.6.0版本起,使用v-slot:插槽名来代替slot=插槽名,且标签模版需要用template包起来
- v-slot指令的值可以用来接收插槽绑定的数据
- v-slot:插槽名可以简写成#插槽名
<child>
<template v-slot:top="{cname,age}">
<h1>{{cname}} - {{age}}</h1>
</template>
<template #:bottom="{cname,age}">
<h1>{{cname}} - {{age}}</h1>
</template>
</child>
Vue.js slot插槽的更多相关文章
- Vue结合slot插槽分发父组件内容实现高度复用、更加灵活的dialog组件
之前写过一篇关于vue实现dialog会话框组件的文章(http://www.cnblogs.com/fozero/p/8546883.html)[http://www.cnblogs.com/foz ...
- 使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件
写在前面 之前写过一篇关于vue实现dialog会话框组件的文章http://www.cnblogs.com/fozero/p/8546883.html, 讲到了如何实现一个vue对话框组件,其中涉及 ...
- Vue 之 slot(插槽)
前言: vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项在使用频率.使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧 ...
- vue中slot插槽
插槽就是vue实现的一套内容分发的API,将插槽元素作为承载分发内容的出口. 也就是说在组件模板中默认占用一个位置,当使用组件标签时候,组件标签的内容就会自动替换掉内容 slot中可以设置一些默认的内 ...
- 简单理解vue的slot插槽
slot的意思是插槽,想想你的电脑主板上的各种插槽,有插CPU的,有插显卡的,有插内存的,有插硬盘的,所以假设有个组件是computer,其模板是 <template> <div&g ...
- vue 之 slot插槽
插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 实际上,一个slot最核心的两个问题这里就点出来了,父组件决定插槽显示或不显示以及怎样显示,子组件决定 ...
- Vue中slot插槽的使用
- vue.js的<slot>
使用插槽分发内容在封装vue组件的时候,很多时候就不得不使用到vue的一个内置组件<slot>.slot是插槽的意思,顾名思义,这个<slot>组件的意义是预留一个区域,让其中 ...
- 构建大型 Vue.js 项目的10条建议
下面是我在开发大型 Vue 项目时的最佳实践.这些技巧将帮助你开发更高效.更易于维护和共享的代码. 今年做自由职业的时候,我有机会开发了一些大型 Vue 应用程序.我所说的这些项目,Vuex stor ...
- Vue.js插槽slot和作用域插槽slot-scope学习小结
一般来说,在Vue项目中使用父子组建时,都是把通用的HTML结构提取出来写成一个子组件,需要动态展示的数据用过prop属性传递,不过有时候我们可能想给子组件传递一个HTML代码,这个时候用prop不太 ...
随机推荐
- JavaScript – Rest Parameters & Spread Operator
介绍 Rest 和 Spread 的共同点是语法都是 ... (点点点). 但它们的概念是相反的. 看例子体会: Rest Parameters 参考: 阮一峰 – rest 参数 rest para ...
- 3.1 migration to 5.0
记入我遇到的问题 : 1. localizer.WithCulture 废弃了 https://github.com/dotnet/aspnetcore/issues/7756 其实讨论很久了, 只是 ...
- x64汇编——汇编指令
汇编指令 mov dest, src mov move的简称 将src的内容赋值给dest,类似于dest = src [地址值] 中扩号 [ ]里面放的都是内存地址 一个变量的地址值,是它所有字节地 ...
- SpringMVC——SSM整合——项目异常处理
项目异常处理 项目异常分类 业务异常 不规范的用户行为产生的异常 规范的用户行为产生的异常 系统异常 项目运行过程中可预计且无法避免的异常 其他异常 编程人员未预期到的异常 项 ...
- 从0到1搭建权限管理系统系列四 .net8 中Autofac的使用(附源码)
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...
- 《Vue.js 设计与实现》读书笔记 - 第11章、快速 Diff 算法
第11章.快速 Diff 算法 11.1 相同的前置元素和后置元素 快速 Diff 算法包含预处理步骤,这借鉴了纯文本 Diff 算法的思路. 先把相同的前缀后缀进行处理,然后再比较中间部分. fun ...
- Windows 10 LTSC 2019(1809) WSL 安装 CentOS 7
1.安装WSL 通过控制面板--程序和功能--启用或关闭WIndows功能,勾选"适用于Linux的Windows子系统". 或者通过管理员权限打开 PowerShel ...
- HTTP三次握手
转载:http://blog.163.com/wangzhenbo85@126/blog/static/1013632822013423502833/?suggestedreading&wum ...
- USB编码方式(NRZI)及时钟同步方式
1.概述 在同步通讯系统中,两个设备通讯则需要同步信号,同步信号分为时钟同步信号和自同步信号两种,时钟同步方式在通讯链路上具有时钟信号(IIC.SPI),自同步方式在通讯链路中没有同步信号(PCIE. ...
- SURF (Speeded Up Robust Features,加速稳健特征)
本篇文章来自wikipedia,如果需要阅读英文,可以去看一下. SURF (Speeded Up Robust Features, 加速稳健特征) 是一个稳健的图像识别和描述算法,首先于2006年发 ...