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. 「Python实用秘技11」在Python中利用ItsDangerous快捷实现数据加密

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第11 ...

  2. 2022春每日一题:Day 21

    题目:[SCOI2007]降雨量 这题比较坑,分几种情况,但是可以总起来说,分开写,两个月份都没出现,maybe,否则如果两个月份都大于[l+1,r-1]的最大值,如果两个月份差值=r-l输出,tru ...

  3. civil3d安装教程2022序列号和密钥

    Civil3D2021 WIN10 64位安装步骤:1.先使用"百度网盘客户端"下载C3D21_CN_x64软件安装包到电脑磁盘里,并右击进行解压,安装前先断网,然后找到Autod ...

  4. hwlog--logger.go

    // Copyright(C) 2021. Huawei Technologies Co.,Ltd. All rights reserved.// Package hwlog provides the ...

  5. linux下进程的实际用户ID(有效组)和有效用户ID(有效组ID)

    实际用户ID(实际组ID):标识当前用户(所属组)是谁,当用户登陆时取自口令文件. 有效用户ID(有效组ID):用来决定我们(当前进程)对文件的访问权(即实际该进程的是以那个用户运行的). 一般情况下 ...

  6. CopyOnWriteArrayList 是如何保证线程安全的?

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在上一篇文章里,我们聊到了ArrayList 的线程安全问题,其中提到了 Copy ...

  7. Django基础笔记2(分页)

    Django Django自带的分页功能 from django.core.paginator import Paginator # 用于分页 curPage = request.GET.get('p ...

  8. web项目的开发--第一天

    如何分析需求.如何设计.编码实现.测试. 用ssm架构实现CRM项目代码编写. CRM项目: 关键是养成好的编程思想和编程习惯. 技术架构 视图层(view): 展示数据,跟用户交互. html,cs ...

  9. troubleshoot:PVC动态扩容报错

    目录 一.问题描述 二.解决方法 一.问题描述 动态扩容PVC的时候报错(kubectl edit pvc pvcname):"error: persistentvolumeclaims & ...

  10. 04.Javascript学习笔记3

    1.箭头函数 箭头函数是一种更短的函数表达式. const age = birthyear => 2022 - birthyear; console.log(age(2000)) 箭头左边的bi ...