https://www.cnblogs.com/sherryweb/p/15437298.html

插槽分两类,默认插槽和具名插槽;通俗理解就是默认插槽是没有名称的插槽,具名插槽是有名称的插槽。

何时使用插槽?

简单的举个栗子:有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>

这时,终于出现了slot。slot的位置就会出现父组件中实践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。

效果如下图:

上面就是2中插槽,默认插槽和具名插槽的用法。

下来是slot-scope。slot-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的值。

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

PS:转自Vue中slot与slot-scope的理解及使用_fang562878311的博客-CSDN博客

本文链接:https://www.cnblogs.com/passkey/p/14291370.html

https://blog.csdn.net/fang562878311/article/details/100579007?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

Vue中slot与slot-scope的理解及使用的更多相关文章

  1. vue中的插槽slot理解

    本篇文章参考赛冷思的个人博客 1.函数默认传参 在我们写js函数我们的可能会给他们一个默认的参数,写法是 function show(age,name){ var age = age || 20; v ...

  2. vue中插槽(slot)的使用

    刚学vue的时候,曾经学习过slot插槽的使用,但是后面接触的不多,因为之前我还没使用element-ui... 但是使用了element-ui之后,里面的许多组件,有时候会使用插槽,为了巩固一下插槽 ...

  3. Vue中的插槽---slot

    一:什么是插槽? 插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性. 插槽显不显示.怎样显示是由 ...

  4. 在vue中使用插槽 slot

    插槽(slot)这个概念非常重要 插槽的使用场景1:在子组件里面显示父组件的dom <div id='root'> <child content = '<p>Dell&l ...

  5. vue中的插槽slot

    插槽(slot):是组件的一块HTML模板,父组件决定这块模板显不显示以及怎么显示. 位置由子组件自身决定(slot现在组件template的什么位置,父组件传过来的模板将来就显示在什么位置) 匿名插 ...

  6. vue中$refs、$slot、$nextTick相关的语法

    Vue 实例还暴露了一些有用的实例属性与方法.它们都有前缀 $,以便与用户定义的属性区分开来 1.$data和$el var data = { a: 1 } var vm = new Vue({ el ...

  7. vue中的slot(插槽)

    vue中的插槽----slot 什么是插槽? 插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性. ...

  8. Vue学习笔记:Slot

    转自:https://www.w3cplus.com/vue/vue-slot.html 在Vue中,slot也分多种,从Vue的官网中可以获知,其主要分为:单个插槽.具名插槽和作用域插槽三种 父组件 ...

  9. vue中的slot理解和使用

    最近被vue 搞得一塌糊涂,理解的比较慢,工作进度进度要求太快,需求理解不明,造成了很大的压力. 在理解Vue中的Slot的时候看了网上的相关内容,看了半天没看到明白说的是什么,然后自己就安装了vue ...

  10. 深入理解vue中的slot与slot-scope

    from:https://segmentfault.com/a/1190000012996217?utm_source=tag-newest 写在前面 vue中关于插槽的文档说明很短,语言又写的很凝练 ...

随机推荐

  1. Django请求生命周期流程图

    Django请求生命周期流程图 流程如下: 浏览器 发送请求(Http请求) web服务网关接口(Django默认的wsgiref模块不能承受高并发,最大只有1000左右) 中间件 >> ...

  2. Aug. 2023 普及组模拟赛 3

    题面 T1 最大生成树 Meaning 给定一个完全图,两点之间的边权为这两个点点权之差的绝对值,求这个图的最大生成树. Solution 对于最小生成树,我们可以考虑 Kruskal 算法. Kru ...

  3. 下一代 2D 图像设计工具「GitHub 热点速览」

    长期以来,2D 设计领域似乎已是 Adobe 与 Figma 的天下,层叠的图层.熟悉的工具栏,一切都显得那么顺理成章,却也让不少设计师在创意的边界上感到了些许乏力.当我们以为设计工具的革新只能是小修 ...

  4. Elastic学习之旅 (11) .NET 6应用集成ES - 上

    大家好,我是Edison. 上一篇:Logstash数据采集 写在开头 有了前面10篇的基础,我们大概清楚了ES的基本概念和使用(主要是查询),这也是我们作为Developer应该了解的范畴,而至于更 ...

  5. 01windows环境配置

    Windows Verilog开发环境配置指南 本指南将详细介绍如何在Windows系统上搭建完整的Verilog开发和仿真环境,包括iverilog.gtkwave.vvp和make工具的安装与配置 ...

  6. C# 如何防止WinForm程序多次运行

    [C# 开发技巧]如何防止程序多次运行 - Learning hard - 博客园 (cnblogs.com) 一.引言 最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,如: http:// ...

  7. Oracle中数值型及处理方法

    数值型 理解精度 number类型的精度表示可以标识数据精确度的位数.对于数字13245.977,当精确到小数点后2位,数据为12345.98,此时精度为7.而当精确到小数点前2位,数据为12300, ...

  8. Let’s Encrypt申请证书

    前提 安装好ngixn,并配置解析好你的域名,仅仅留下证书配置处不填写即可. 安装certbot certbot 官方推荐的自动化脚本, 用来申请免费SSL证书的. (certbot中文翻译是 证书机 ...

  9. 论文中关于要使用600线的python代码

    简介 论文中通常要使用600dpi的图片, 如果一个一个用PS来进行修改实在是费力不讨好. 使用python一套带走 code import os from PIL import Image impo ...

  10. 国际认可!天翼云“云顶”AI赋能营销服务应用案例成功入选联合国AI for Good创新扩大影响案例集!

    7月8日至11日,由联合国国际电信联盟(ITU)与联合国工业发展组织.联合国教科文组织等40余家联合国机构共同举办的2025人工智能向善全球峰会在瑞士日内瓦召开.峰会期间,ITU正式发布"人 ...