文章目录

  • 一、概述
  • 二、使用步骤
  • 三、何时使用插槽?
  • 四、如何使用插槽?
  • 五、拓展阅读

一、概述

插槽就是子组件中用slot标签定义的预留位置,可以设置name属性,也可以不设置name属性,设置name属性的叫具名插槽,不设置name属性的叫不具名插槽,在父组件中使用子组件时候,可以在使用子组件标签内通过声明插槽名或不声明插槽名的方式往子组件中的具名插槽或者不具名插槽写入html代码。

插槽使用的关键在于:在父组件中使用子组件标签的时候可以往子组件内写入html代码。

二、使用步骤

  1. 子组件中定义插槽;
  2. 父组件使用子组件时往插槽写入代码;

三、何时使用插槽?

简单的举个栗子:有2个组件,父组件father,子组件son。

父组件 father

<template><div><h3>这是父组件</h3><son>实践slot</son></div>
</template>

子组件 son

<template><div><h4>这是子组件</h4><input type="text" placeholder="请输入"></div>
</template>

一般我们的组件都会怎么写,但是这么写的话,会发现子组件中的实践slot是显示不出来的。如果需要让他显示出来,这时我们就可以用到插槽slot了。

四、如何使用插槽?

首先,子组件中我们要添加插槽slot

<template><div><h4>这是子组件</h4><input type="text" placeholder="请输入"><slot></slot> </div>
</template>

这时,终于出现了slotslot的位置就会出现父组件中实践slot这几个大字。

可以看到,这里 的slot是没有名称的,顾名思义,这是插槽中的不具名插槽

然后再看看具名插槽,直接上代码。

父组件

<template><div><h3>这是父组件</h3><son><span>实践slot</span></son><son><template slot="myslot"><div>实践具名slot</div></template></son></div>
</template>

子组件

<template><div><h4>这是子组件</h4><input type="text" placeholder="请输入"><slot></slot><slot name="myslot"></slot></div>
</template>

可以看出,和默认插槽不同的是,在子组件中,我们给插槽一个name属性,这个就是插槽的名称,同时在父组件中,我们在需要将内容插入的地方标签上加了一个slot属性,他的值就是我们的slot 名称name

接下来看下slot-scopeslot-scope是作用域插槽。

官网中有一句特别强调的话:父组件模板的所有内容都会在父级作用域内编译;子组件模板的所有内容都会在子级作用域内编译。简单的说,就是父组件中不能直接用子组件中定义的data数据。而slot-scope的出现就是解决了这样的问题。

父组件

<template lang=""><div><h3>这是父组件</h3><son><template slot="myslot" slot-scope="scope"><ul><li v-for="item in scope.data">{{item}}</li></ul></template></son></div>
</template>

子组件

<template><div><h4>这是子组件</h4><input type="text" placeholder="请输入"><slot name="myslot" :data='list'></slot></div>
</template>
<script>
export default {name:'Son',data(){return{list:[{name:"Tom",age:15},{name:"Jim",age:25},{name:"Tony",age:13}]}}
}
</script>


其中,下方三个对象的值,我们本身是在子组件中定义的,按照官方文档中说的,本来父组件中是无法显示出来这些数据的,但是为什么现在显示出来了呢?这就要归功于我们强大的slot-scope了。

首先,在子组件中的插槽上有一句data="list",而在父组件中也有slot-scope="scope"slot-scope就是取data的值,slot-scope的值是自定义的,我们可以取任何名称,但是data的值传过来时是以对象形式传输的,所以在这scope.data才是list的值。

这样我们就可以在父组件中取到子组件的值,并且加以应用了。

五、拓展阅读

vue2.6.0开始,slotslot-scope已经被废弃,推荐使用v-slot;有关两者的用法区别,请移步博文《Vue进阶(幺贰捌):Vue插槽:slot、slot-scope与指令v-slot使用方法区别讲解》。

Vue进阶(幺贰柒):插槽详解相关推荐

  1. vue + element-ui 聊天_Vue 插槽详解

    阅读本文约需要5分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下前端几种高级布局的方式的相关知识,今天跟大家分享Vue ...

  2. Apollo进阶课程㉙丨Apollo控制技术详解——控制器的类型

    原文链接:进阶课程㉙丨Apollo控制技术详解--控制器的类型 控制主要是为了弥补数学模型和物理世界执行之间的不一致性.对于自动驾驶而言,规划的轨迹和车辆的实际运行轨迹并不完全一致,控制器按照规划轨迹 ...

  3. Apollo进阶课程㉘丨Apollo控制技术详解——基于模型的控制方法

    原文链接:进阶课程㉘丨Apollo控制技术详解--基于模型的控制方法 PID控制是一个在工业控制应用中常见的反馈回路部件,由比例单元P.积分单元I和微分单元D组成.PID控制的基础是比例控制:积分控制 ...

  4. Apollo进阶课程㉗丨Apollo控制技术详解——控制理论

    原文链接:进阶课程㉗丨Apollo控制技术详解--控制理论 控制模块根据预测的轨迹和估计的车辆状态向油门.刹车或转向扭矩发送适当的命令.控制模块使汽车尽可能接近计划的轨迹.控制器参数可以通过最小化理想 ...

  5. python动态类型的坑_python进阶教程之动态类型详解

    动态类型(dynamic typing)是Python另一个重要的核心概念.我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值.这些都与动态类型的概念 ...

  6. 微信h5登录php,vue实现微信授权登录步骤详解

    这次给大家带来vue实现微信授权登录步骤详解,vue实现微信授权登录的注意事项有哪些,下面就是实战案例,一起来看一下. 背景 vue前后端分离开发微信授权 场景 app将商品分享到微信朋友圈或者分享给 ...

  7. 【Vue路由(router)进一步详解】

    Vue路由(router)进一步详解 query属性 具体实例代码如下: params属性 具体实例代码如下: props属性 replace属性 编程式路由导航 路由缓存 具体代码: 总结 本篇文章 ...

  8. 数据列表 多选 html,Vue多选列表组件深入详解

    这篇文章主要介绍了Vue多选列表组件深入详解,这个是vue的基本组件,有需要的同学可以研究下 多选列表 (Multi-Select) 是一种将所有选项列出,并允许用户利用 Ctrl/Shift 键进行 ...

  9. vue动画过渡 javascript钩子函数详解

    vue动画过渡js钩子函数详解 前言 js钩子函数运行时间 js钩子函数的过渡或动画 总结 结语 前言 转载请注明出处并附上链接. 本文中,enter(leave)过程指的是beforeEnter.e ...

  10. Vue 深度选择器:deep()与::v-deep详解

    Vue 深度选择器:deep()与::v-deep详解 在Vue中,::v-deep 和 :deep() 都用于修改CSS选择器的作用域. 区别在于: :deep() 是一个伪类选择器,可以用于将CS ...

最新文章

  1. 在CentOS 7.7 x86_64上安装InfluxDB 1.8.0实录
  2. GO库安装报错解决:unrecognized import path golang.org/x/net (https fetch: dial tcp i/o timeout
  3. G6 图可视化引擎——入门教程——元素及其配置
  4. 资产支持证券(Asset-Backed Security)
  5. 利用MyBatis的动态SQL特性抽象统一SQL查询接口
  6. 试论述计算机辅助教学的特点,浅谈计算机辅助教学特点
  7. 程序设计中的一些感悟
  8. mysql auto_increment建表_如何在MySQL中已创建的表中插入AUTO_INCREMENT
  9. RN react-native-wechar 微信支付、分享
  10. 华为ensp模拟校园网/企业网实例(精品拓扑图)
  11. 腾讯云弹性MapReduce
  12. 一些实用网址 ubuntu截图+屏蔽一些网址+windows7+ubuntu双系统+泰语打字练习
  13. (2)arduino读取电压相对值(模拟读取传感器数值)
  14. Maya2022和C4D哪个更好用?
  15. [4G5G专题-112]:部署 - LTE邻区规划、配置、自动邻区关系ANR
  16. 解决文件名是中文时的下载乱码问题
  17. 【论文阅读】保守和适应性惩罚+基于模型的安全强化学习
  18. chrome清除当前网页缓存和禁用js
  19. python合并ts文件教程
  20. 如何自己开发网站(一)

热门文章

  1. 中国移动光猫的拨号和桥接模式的区别
  2. 【移动端】手机界面的设计尺寸
  3. linux权限sudo和su,Linux中su与sudo、su - root的区别
  4. 你总是喜欢抓不住的东西
  5. flutter桌面_Flutter如何赢得桌面
  6. indexedDB复合索引
  7. [论文阅读笔记]Aladdin: Optimized Maximum Flow Management for Shared Production Clusters
  8. 【TCO2013 Semifinal 2】 OneBlack
  9. linux上使用scp命令进行上传和下载
  10. Spring boot后台搭建二集成Shiro添加Remember Me