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. 有趣的 Go HttpClient 超时机制

    hello,大家好呀,我是既写 Java 又写 Go 的小楼,在写 Go 的过程中经常对比这两种语言的特性,踩了不少坑,也发现了不少有意思的地方,今天就来聊聊 Go 自带的 HttpClient 的超 ...

  2. 2022-11-08 Acwing每日一题

    本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我会认真改正的.同时也希望 ...

  3. API 如何选择 REST,GraphQL还是gRPC

    关于API的演进 CORBA RDA XML-RPC SOAP REST JSON-RPC ODATA GraphQL gRPC       gRPC是什么?

  4. 多点DMALL × Apache Kyuubi:构建统一SQL Proxy探索实践

    伴随着国家产业升级的推进和云原生技术成熟,多点 DMALL 大数据技术也经历了从存算一体到存算分离的架构调整变迁.本文将从引入 Kyuubi 实现统一 SQL Proxy 的角度讲述这一探索实践的历程 ...

  5. 微服务系列之服务注册发现 Consul

    1.为什么需要服务注册与发现   微服务架构中,服务于服务之间内部通信必不可少,比如A服务调用B服务,起初我们的做法是,A服务从配置文件中拿到B服务的IP.端口地址,进行访问,本身是没什么问题的,但是 ...

  6. c++学习笔记(入门)

    1 struct和class的区别 struct成员变量(成员函数)的访问属性缺省的情况下默认为public. class成员变量(成员函数)的访问属性缺省的情况下默认为private. 2 初始化列 ...

  7. linux全新机器环境搭建流程梳理

    软件解压后安装基础指令(复制用):./configure && make && make install ./configure --prefix=/usr/local ...

  8. 2022年Kubernetes CKA 认证真题解析完整版

    第一题 RBAC授权问题权重: 4% 设置配置环境:[student@node-1] $ kubectl config use-context k8s Context为部署管道创建一个新的Cluste ...

  9. 盘点JAVA中基于CAS实现的原子类, 你知道哪些?

    前言 JDK中提供了一系列的基于CAS实现的原子类,CAS 的全称是Compare-And-Swap,底层是lock cmpxchg指令,可以在单核和多核 CPU 下都能够保证比较交换的原子性.所以说 ...

  10. Django框架三板斧本质-jsonResponse对象-form表单上传文件request对象方法-FBV与CBV区别

    目录 一:视图层 2.三板斧(HttpResponse对象) 4.HttpResponse() 5.render() 6.redirect() 7.也可以是一个完整的URL 二:三板斧本质 1.Dja ...