解读 Vue 之插槽 (slot)(未完,待续···)

(一)前言

【MDN】HTML <slot>元素 ,作为 Web Components 技术套件的一部分,是Web组件内的一个占位符。该占位符可以在后期使用自己的标记语言填充,这样您就可以创建单独的DOM树,并将它与其它的组件组合在一起。

Vue 代码中的 slot 是什么,简单来说就是插槽。<slot> 元素作为组件模板之中的内容分发插
槽,传入内容后 <slot> 元素自身将被替换。

(二)插槽分类及使用

插槽分为三种:默认插槽、具名插槽以及作用域插槽。

  • 默认插槽
# 定义插槽, child.vue
<template>
    <slot>默认内容</slot>
</template>

#使用 parent.vue
<template>
     <child>
           <template>My Content...</template>
      </child>
</template>

<!-- 独占默认插槽的缩写 -->
<child>
    <template #default="slotProps"></template>
</child>

  • 具名插槽: 顾名思义,就是给插槽起一个名字,方便区分和使用。
# 定义具名插槽,命名为 content
<template>
      <slot name="content">默认内容</slot>
</template>

在 2.6.0 中,我们为具名插槽和作用域插槽引入了一个新的统一的语法 (即 v-slot 指令)。它取代了 slotslot-scope 这两个目前已被废弃但未被移除且仍在文档中的特性。新语法的由来可查阅这份 RFC

  • 作用域插槽:
# 定义作用域插槽,命名为 content
<template>
      <slot name="content" :user="user" :getUserName="getUserName">默认内容</slot>
</template>
<script>
export default {
    data() {
        user: {name: ''}
    }
    methods: {
        getUserName() {
              console.log(this.user.name);
        }
    }
}
</script>

v-slot的缩写是#,但是如果使用#的话,必须始终使用具插槽来代替
<template #default="slotProps"></template>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【2019-3-4更新】Vue 2.6+修改了部分语法,对插槽的使用有了较多的更新。在本文中笔者在相应位置给出了更...
    果汁凉茶丶阅读 10,499评论 2 36
  • 最近忙着写一些组件,关于插槽这一块自己还是用着 slot 和 slot-scope,然后看了一下文档的更新,于是又...
    费莱姆阅读 958评论 0 7
  • 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装...
    youins阅读 9,705评论 0 13
  • 今日笔记,slot插槽, 我男朋友跟我说,学习一样东西,你需要给自己提三个问题,然后带着这三个问题去研究, 于是我...
    Autumn_2460阅读 940评论 0 0
  • 近来,我慢慢的,慢慢的意识到,我们大都是独立的个体,有着独立的思维,独立的人格,也很难再为了谁去改变什么。 我很担...
    琉筱璃阅读 512评论 0 3

友情链接更多精彩内容