slot插槽的学习笔记

今日笔记,slot插槽,

我男朋友跟我说,学习一样东西,你需要给自己提三个问题,然后带着这三个问题去研究,

于是我给自己提了三个问题,

slot插槽是什么东西?slot插槽有什么用?slot插槽怎么用?

进入学习:

<slot></slot> //此标签就是slot插槽。

当你看到了如上标签,就说明你转角遇到slot插槽啦。

slot标签在子组件模板中插入使用,可以将它理解为一个占位符,在子组件模板中声明了这么一个占位符,然后在父组件中引入此组件时,便可以在子组件的开始标签和闭合标签之间填入内容。

看代码:(没有slot)

1563612774315.png

可以看到,我在App组件里引入里HelloWorld组件,此时的HelloWorld组件模板里并没有插入slot插槽,所以在父组件中引入的HelloWord组件开始标签和闭合标签之间的内容(如此例子:“只有在当前组件模板内插入slot插槽才能显示这段话”)没有被显示,只显示了子组件模板中的内容(如此例:“这是子组件HelloWorld”)。

代码:(插入slot)

1563613127499.png

当在子组件HelloWorld模板中插入slot插槽后,在父组件中引入的子组件标签之间的内容就可以显示出来了。
如果你能看明白上面的代码例子,那上面的三个问题就迎刃而解了吧,很简单是不是.

  • question1:slot插槽是什么东西?
    slot插槽就是<slot></slot>这个标签,相当于占位符,在该组件中插入slot标签,这个时候父组件中引入的该组件的开始标签和结束标签之间就有一个插槽.
  • question2:slot插槽有什么用?
    只有当你在组件模板中引入slot标签时,在父组件中引入的这个组件的标签内的内容才会被显示出来.插槽内可以包含任何模板代码,包括 HTML,也包括组件
  • question3:slot插槽怎么用?
    如上例代码,在组件模板内部插入slot标签就可以啦.
    好简单啊~
    但是slot并不是只有这么一点点内容哦,
    它还有编译作用域,后备内容,具名插槽,作用域插槽,动态插槽名...
编译作用域

如果你想在插槽中使用data中的数据也是可以.
比如这样:

image.png

由此可得,插槽中可以直接访问当前模板作用域。
提个问题,可以在App组件的HelloWorld组件标签中访问得到HelloWorld组件中的数据msg吗?
可以来试一下,将App组件中的{{message}}改为{{msg}}
image.png

运行结果:
image.png

这里结果报错为msg is not defined,说明不能访问到HelloWorld模板中的数据。
这里可以记住官网中的一条规则:
父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的。
那么如何能获取得到子组件中的数据呢?这里就需要涉及到作用域插槽的知识点了。这个后面再讲~

后备内容

后备内容也很简单,顾名思义,就是有一个备用的内容,当插槽中没有内容的时候,就用这个后备内容补上。用法:将后备内容写在该组件(子组件)的slot标签中的。


image.png

可以看看当插槽中有数据的时候,slot标签中的后备内容还会不会被显示出来


image.png

结果显明:
子组件标签中的内容把子组件模板中slot标签中的后备内容替换了。
具名插槽

具名插槽用于解决有多个slot插槽时,我们希望可以在指定位置显示具体内容的问题。
先来看看当有多个slot标签时页面运行结果会是什么样子的,

image.png

可以看出:子组件模板有多少个插槽,子组件标签内的内容就分别显示多少次。这肯定不是预期期望的结果。
这个时候具名插槽就派上用场了。
<slot> 元素有一个特殊的特性:name。这个特性可以用来定义额外的插槽
让我们给slot标签加上name:
image.png

现在是不是就是预期效果啦。
然而...
Vue2.6.0 更新之后,这种用法已经被废弃。正确用法是用v-slot指令来代替(v-slot也和v-bind一样有缩写,缩写符号为”#“),并且只能在template标签上使用,用法如下:
image.png

现在 <template> 元素中的所有内容都将会被传入相应的插槽。
总结:在向具名插槽提供内容的时候,我们需要在一个 <template> 元素上使用 v-slot 指令,并以 v-slot 的参数的形式提供其名称
值得注意的是,没有给name值的slot其实都有一个隐含的name:default,任何没有被包裹在带有 v-slot 的 <template> 中的内容都会被视为默认插槽的内容。

作用域插槽

终于讲到作用域插槽了,
让我们回顾一下编译作用域,


image.png

此时App模板是访问不到HelloWorld组件中的数据的,但是还是有方法可以实现App访问HelloWorld的数据的。
实现方法:
我们可以将 msg 作为 <slot> 元素的一个特性绑定上去:

<template>
  <div>
    <div>这是子组件HelloWorld</div>
    <slot :msg="msg"></slot>
  </div>
</template>

绑定在 <slot> 元素上的特性被称为插槽 prop。现在在父级作用域中,我们可以给 v-slot 带一个值(此例为helloWorld,你也可以用别的名称)来定义我们提供的插槽 prop 的名字:

<hello-world>
      <template v-slot:default="helloWorld">访问当前组件的msg数据==={{helloWorld.msg}}</template>
    </hello-world>

运行结果:

image.png

你还可以这样写:
image.png

这个就是用到了解构插槽的知识,可以参考官网,已经讲的很清楚了解构插槽 Prop

本文为自己的学习笔记,感觉讲的有点乱,不过官方文档其实已经讲的很详细了,看不懂的同学可以多看几遍官方文档。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容