1 简介

  是一种组件间通信的方式,让父组件可以向子组件指定位置插入 html 结构。子组件中的提供给父组件使用的一个占位标签,用<slot></slot> 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>标签。简单理解就是子组件中留下个“坑”,父组件可以使用指定内容来补“坑”。

  匿名插槽,具名插槽, 作用域插槽

2 匿名插槽

2.1 子组件 StudentComp.vue

  在子组件StudentComp.vue中,<h1>小学生</h1>这个标签下面的结构是不确定的,希望在父组件使用该组件的时候传入结构。所以在这里添加一个slot标签。并且可以填写默认结构,当父组件不传时显示默认结构

<template>
<div> <h1>小学生</h1> <slot>默认内容(父组件不传结构时显示)</slot> </div> </template> <script> export default {
name:'StudentComp',
data(){
return { }
}
}
</script>

2.2 父组件SchoolComp.vue

  如下,在使用StudentComp标签时,可以传入结构。在传入的结果上面需要加上一个属性slot,一般都用一个template标签来包裹要传入的结果

<template>
<div>
<h1 >实验小学</h1>
<StudentComp >
<template slot>
<h1 >父组件传入的结构</h1>
<button>父组件传入的结构</button>
</template> </StudentComp> </div>
</template> <script>
import StudentComp from './StudentComp' export default {
name:'SchoolComp',
data(){
return { }
},
components:{
StudentComp
} }
</script>

2.3 效果

3 具名插槽

  具名插槽是匿名插槽的扩展。就是在slot标签加了一个name属性,这个样子可以区分多个slot标签

3.1 子组件StudentComp.vue

  这里有两个插槽,设置name属性

<template>
<div> <h1>小学生</h1> <slot name="slot1">默认内容1(父组件不传结构时显示)</slot> <h1>中学生</h1>
<slot name="slot2">默认内容2(父组件不传结构时显示)</slot> </div> </template> <script> export default {
name:'StudentComp',
data(){
return { }
}
}
</script>

3.2 父组件SchoolComp.vue

  这里要传入的结果slot属性的值要设置为要插入的插槽的name属性值

<template>
<div>
<h1 >实验小学</h1>
<StudentComp >
<template slot="slot1">
<h1 >父组件传入的结构</h1>
<button>父组件传入的结构</button>
</template> <template slot="slot2">
<h1 >父组件传入的结构2</h1>
<button>父组件传入的结构2</button>
</template> </StudentComp> </div>
</template> <script>
import StudentComp from './StudentComp' export default {
name:'SchoolComp',
data(){
return { }
},
components:{
StudentComp
} }
</script>

3.3 效果

4 作用域插槽

  作用域插槽扩展了一个功能,可以把子组件的数据传到父组件

4.1 子组件StudentComp.vue

  在插槽,可以传入数据到父组件那里。

  在slot标签填写任意属性名,传入数据(可以填写多个属性名)

  这里传入了两个数据,名字分别为datalist和count

<template>
<div> <h1>小学生</h1> <slot name="slot1" :datalist="datalist" :count="count">默认内容1(父组件不传结构时显示)</slot> </div> </template> <script> export default {
name:'StudentComp',
data(){
return {
datalist:['a','b','c'],
count:1
}
}
}
</script>

4.2 父组件SchoolComp.vue

  使用scope属性接收数据,接收到的是一个key-value对象

  如下面,通过data.datalist和data.count可以获取到两个数据

<template>
<div>
<h1 >实验小学</h1>
<StudentComp >
<template slot="slot1" scope="data">
<ul>
<li v-for="(g,index) in data.datalist" :key="index">{{g + '-' + data.count}}</li>
</ul>
</template> </StudentComp> </div>
</template> <script>
import StudentComp from './StudentComp' export default {
name:'SchoolComp',
data(){
return { }
},
components:{
StudentComp
} }
</script>

4.3 效果

Vue32 插槽的更多相关文章

  1. 【转】Linux查看内存大小和插槽

    原文https://wsgzao.github.io/post/linux-memory/ Linux 查看内存的插槽数,已经使用多少插槽,每条内存多大,已使用内存多大 dmidecode | gre ...

  2. vue 全局插槽 全局插座

    场景: slot 能够让父组件内容插入到子组件中,但是子孙组件不能够使用slot直接插入内容.在弹窗的时候,全屏弹窗需要直接在组件最上层显示,如果父组件级别不够,弹出就可能不是全屏的. 知识点: 1: ...

  3. vue2.0使用slot插槽分发内容

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. PCI和PCIE插槽有什么区别?

    PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽.PCI插槽也是主板带有最 ...

  5. Vue结合slot插槽分发父组件内容实现高度复用、更加灵活的dialog组件

    之前写过一篇关于vue实现dialog会话框组件的文章(http://www.cnblogs.com/fozero/p/8546883.html)[http://www.cnblogs.com/foz ...

  6. vue-render函数和插槽

    Vue render函数,官方文档定义绝大部分时候我们使用template 来创建html 模板,但是纯html 和css都基本上都不具有编程能力,而当我们想使用 javascript的编程能力时,我 ...

  7. Vue slot插槽

    插槽用于内容分发,存在于子组件之中. 插槽作用域 父级组件作用域为父级,子级组件作用域为子级,在哪定义的作用域就在哪. 子组件之间的内容是在父级作用域的,无法直接访问子组件里面的数据. 插槽元素 &l ...

  8. Vue插槽的深入理解和应用

    一开始接触vue时并不知道插槽是什么,后来看了很多文章也是一知半解.然后自己手动敲了一下,在项目中实际应用一下,实在太好用了.后来做小程序后发现也能使用slot,不单单在vue中使用.我就是这么目光短 ...

  9. react 插槽(Portals)

    前言: 昨天刚看了插槽,以为可以解决我工作中遇到的问题,非常激动,我今天又仔细想了想,发现并不能解决... 不过还是记录一下插槽吧,加深印象,嗯,就酱. 插槽作用: 插槽即:ReactDOM.crea ...

  10. vue slot插槽的使用

    slot插槽的使用场景 父组件向子组件传递dom时会用到插槽   作用域插槽:当同一个子组件想要在不同的父组件里展示不同的状态,可以使用作用域插槽.展示的状态由父组件来决定   注:想要修改父组件向子 ...

随机推荐

  1. linux ip命令

    ip link show # 显示网络接口信息 ip link set eth0 up # 开启网卡 ip link set eth0 down # 关闭网卡 ip link set eth0 pro ...

  2. 记一次spark数据倾斜实践

    参考文章: 大数据项目--倾斜数据的分区优化 数据倾斜概念 什么是数据倾斜   大数据下大部分框架的处理原理都是参考mapreduce的思想:分而治之和移动计算,即提前将计算程序生成好然后发送到不同的 ...

  3. git回滚操作系列

    git回滚操作系列 准备工作 本地环境 线上环境 分支 master 场景1 线上环境回滚,同步线上与本地操作 线上环境当前与本地一致 先把线上回滚至早期 获取提交日志 [root@root]# gi ...

  4. SPFA和链式前向星

    链式前向星 一种存储图的数据结构 建立一个结构体和一个数组加一个变量,这里的to代表边\((u,v)\)中的\(v\)结点,而\(edge\)数组的索引\(idx\)代表\(u\),其中\(w\)代表 ...

  5. Day21:方法重写以及注意细节

    目录 方法重写 什么是方法重写? 方法重写有什么用? 方法重写的注意细节 方法重写 什么是方法重写? 方法重写指的是当子类和父类出现了一摸一样的方法声明 方法重写有什么用? 当父类中有一个方法时,子类 ...

  6. 更换linux的开机启动图片, 启动主题

    简述 之前就想更改开机的启动图片,但是后来简单查了一下,说要重新编译内核,听到编译我就望而却步了,今天发现只是个命令而已,注意这里我用的是 linux mint .这里更改不是 grub 主题, 是 ...

  7. python调用程序路径中包空格,及包含特殊字符问题

    解决办法 import os s = r'"C:\Program Files\Google\Chrome\Application\chrome.exe"' print(s) os. ...

  8. 社论 22.10.14 区间在线去重k小

    浅谈区间在线去重k小 关于讨论 https://www.luogu.com.cn/discuss/509205 本文将描述一种分块做法以及讨论中提出的各种 \(O(n \ \text{polylog} ...

  9. .net core 中 WebApiClientCore的使用

    WebApiClient 接口注册与选项 1 配置文件中配置HttpApiOptions选项 配置示例 "IUserApi": { "HttpHost": &q ...

  10. Ubuntu20.04 Java相关环境(JDK、Mysql、Redis、nacos、influxdb)部署以及运行

    重装了系统,系统版本号为:Ubuntu20.04 1.云平台 登录云平台,选择要重装的服务器,关机.一键重装即可 2.安装jdk 下载jdk-8u341-linux-x64.tar.gz,并复制到服务 ...