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. 安装harbor仓库

    1.安装docker-compose curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-c ...

  2. 2022春每日一题:Day 34

    题目:lowbit求和 (没有找到哪个公开题库有这个题) 题意:求数组中任意一对数的异或和的lowbit的总和. 对于异或,二进制位中两个数相等则为0,反之为1,而且此题是要求lowbit,那我们利用 ...

  3. DevOps 必备的 Kubernetes 安全清单

    Kubernetes 是当今许多公司采用的容器编排平台,它的实施需要对其生态系统有一定的了解,以便部署一个准备好用于生产的集群.然而从原则上来说,Kubernetes 并不是一个安全的平台,因为它缺乏 ...

  4. 带你从入门到精通学习WireShark

    个人名片: 因为云计算成为了监控工程师‍ 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying 带你从入门到精通学习WireShark 一.什么是WireShark? 二.WireShar ...

  5. 为什么你的static_assert不能按预期的工作?

    static_assert是c++11添加的新语法,它可以使我们在编译期间检测一些断言条件是否为真,如果不满足条件将会产生一条编译错误信息. 使用静态断言可以提前暴露许多问题到编译阶段,极大的方便了我 ...

  6. 【每日一题】【排序sort重载】【工具类】2021年12月23日-31. 下一个排列

    实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数). 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须 ...

  7. cesium加载倾斜摄影,添加billboard并注册点击事件

    完整示例代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. 一键部署MySQL8+keepalived双主热备高可用

    概述 本次的文章会格外的长,网上大多的配置流程已经不可使用,本篇文章可以称为保姆级教程,而且通过shell脚本大大减少了部署mysql主从,双主的工作量. 如上图,VIP地址为192.168.10.1 ...

  9. 定制.NET 6.0的Middleware中间件

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 在本文中,我们将学习中间件,以及如何使用它进一步定制应用程序.我们将快速学习中间件 ...

  10. ModuleNotFoundError: No module named 'MySQLdb'

    执行命令 python manage.py makemigrations时抛出以下错误 Traceback (most recent call last): File "D:\Program ...