vue slot插槽

作用及作用域

如果一个组件内没有包含一个<slot>元素,那么该组件标签开始和结束之间的任何内容会被抛弃;
父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的。

用法

如果想插入多个不同的slot到指定的位置,可以为每个插槽指定一个名字,如下所示:

<div class="container">
  <header>
    <slot name="header"></slot>
  </header>
  <main>
    <slot></slot>
  </main>
  <footer>
    <slot name="footer"></slot>
  </footer>
</div>

注:一个不带 name 的 <slot> 出口会带有隐含的名字“default”。
然后使用v-slot指令,可以具体内容插入到指定的插槽,如下所示:

<base-layout>
  <template v-slot:header>
    <h1>Here might be a page title</h1>
  </template>

  <p>A paragraph for the main content.</p>
  <p>And another one.</p>

  <template v-slot:footer>
    <p>Here's some contact info</p>
  </template>
</base-layout>

而没有带v-slot指令的内容会被插入到默认的位置,即default的位置。
注意 v-slot 只能添加在 <template> 上 ,只有一种例外情况:当被提供的内容只有默认插槽时,如下:

<current-user>
  <template v-slot:default="slotProps">
    {{ slotProps.user.firstName }}
  </template>
</current-user>

可以写成:

<current-user v-slot:default="slotProps">
  {{ slotProps.user.firstName }}
</current-user>

v-slot:header 可以缩写为 #header,该缩写只在其有参数的时候才可用,即v-slot:default=" "不可写成#=" ",但可以写成#default=“ ”。

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

相关阅读更多精彩内容

  • vue slot 作用:子template中 定义 给 父template 更改页面的插槽,注: vue2.6 c...
    Mr菜头阅读 1,479评论 0 0
  • vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项在...
    流年落盡阅读 1,116评论 0 0
  • Vue 实现了一套内容分发的 API,将 元素作为承载分发内容的出口,即可以将在组件内填写的内容渲染在子组件的...
    b91b9cf10fff阅读 268评论 0 0
  • 1. 无名插槽: 直接写需要插入的内容即可,内容将会插入到 所有 无名插槽中。 html中: 2. 具名插槽: 需...
    Christoles阅读 400评论 0 0
  • <slot> 元素作为承载分发内容的出口,可以实现组件的复用。 简单的说就是《定制模板》 一个template由多...
    Mr无愧于心阅读 6,687评论 1 0

友情链接更多精彩内容