插槽作用

在讲插槽之前我们先来看个例子:

在父组件My.vue里,代码如下:
具名插槽又是什么鬼?
在子组件MyChild.vue里,代码如下:
具名插槽又是什么鬼?
运行跑起来,看下效果:
具名插槽又是什么鬼?
我们会发现,不用插槽时,组件里的p标签内容并不会显示出来,为了让它显示出来,我们可以在子组件MyChild.vue里用上插槽,如下所示:
具名插槽又是什么鬼?
再来看下效果:
具名插槽又是什么鬼?
此时组件里的p标签内容就全部显示出来了。

从上面例子就能看出来了,插槽具有占位作用,我们在需要把父组件里的子组件里添加一些DOM元素时就可以用到插槽了。

具名插槽

在讲具名插槽之前,还是先来看个例子
在父组件My.vue里,代码如下:
具名插槽又是什么鬼?
在子组件MyChild.vue里,代码如下:
具名插槽又是什么鬼?
现在我们想通过插槽实现浏览器上显示出,h2标签的内容显示在最上面,h1标签的内容显示在中间,p标签的内容显示在h1标签下方,也就是说想要显示出如下效果:
具名插槽又是什么鬼?
可能有同学会说了,直接在子组件MyChild.vue里的h1标签上方和下方各加一个插槽不就好喽,好,我们先试一下:
具名插槽又是什么鬼?
具名插槽又是什么鬼?
再来看下效果:
具名插槽又是什么鬼?
我们发现结果是在h1标签的上方和下方都出现了h2标签内容和p标签内容,不是我们想要的结果,这个时候就要用到我们的具名插槽了。
具名插槽,顾名思义,就是有具体名字的插槽,实现方法是先在子组件对应分发slot标签里,添加name="name名” 属性,其次父组件在要分发的标签里添加 slot="name名” 属性,然后就会将对应的标签放在对应的位置了。

针对上面的例子,我们可以这样用具名插槽解决:
在父组件My.vue里,代码如下:
具名插槽又是什么鬼?
在子组件MyChid.vue里,代码如下:
具名插槽又是什么鬼?
最后结果就是我们想要的结果了。

注意事项

在父组件My.vue里,代码如下:
具名插槽又是什么鬼?
子组件MyChild.vue里,代码如下:
具名插槽又是什么鬼?
最后效果如下:
具名插槽又是什么鬼?
那有同学会问,h2标签的样式写在哪个组件里呢?其实,h2标签样式写在哪个组件都可以,但是title变量的值只能写在父组件My.vue的data里,只能写在传递方的data里。

在 2.6.0 中,我们为具名插槽和作用域插槽引入了一个新的统一的语法 (即 v-slot 指令)。它取代了 slot 和 slot-scope 这两个目前已被废弃但未被移除且仍在文档中的 attribute。所以,以后我们就用v-slot指令表示插槽了。

具名插槽又是什么鬼?

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-23
  • 2021-04-18
  • 2021-07-04
  • 2022-12-23
  • 2021-08-10
  • 2022-12-23
猜你喜欢
  • 2021-12-19
  • 2021-08-01
  • 2022-12-23
  • 2022-02-03
  • 2021-11-08
  • 2021-10-20
  • 2022-12-23
相关资源
相似解决方案