Slot

目录

组件中定义一个槽

 1//navigation-link组件
 2//插槽内可以包含任何模板代码
 3//<slot></slot> 将会被替换为1.1中的 <span class="fa fa-user"></span> Your Profile
 4<a
 5  v-bind:href="url"
 6  class="nav-link"
 7>
 8  <slot></slot>
 9</a>
10

后备内容

1//Submit只会在没有提供内容的时候被渲染
2<button type="submit">
3  <slot>Submit</slot>
4</button>

具名槽

 1//一个不带 name 的 <slot> 出口会带有隐含的名字“default”
 2<div class="container">
 3  <header>
 4    <slot name="header"></slot>
 5  </header>
 6  <main>
 7    <slot></slot>
 8  </main>
 9  <footer>
10    <slot name="footer"></slot>
11  </footer>
12</div>

带数据的槽

1<span>
2  <slot v-bind:user="user">
3    {{ user.lastName }}//默认
4  </slot>
5</span>

插入槽内容

1//1.1
2
3<navigation-link url="/profile">
4  <!-- 添加一个 Font Awesome 图标 -->
5  <span class="fa fa-user"></span>
6  Your Profile
7</navigation-link>
8

具名插

  • 注意 v-slot、#只能够用在 template 或者组件上
 1//<template> 元素中的所有内容都将会被传入相应的插槽。任何没有被包裹在带有 v-slot 的 <template> 中的内容都会被视为默认插槽的内容
 2<base-layout>
 3  <template v-slot:header>
 4    <h1>Here might be a page title</h1>
 5  </template>
 6
 7  <template v-slot:default>
 8    <p>A paragraph for the main content.</p>
 9    <p>And another one.</p>
10  </template>
11
12  <template v-slot:footer>
13    <p>Here's some contact info</p>
14  </template>
15</base-layout>

插入带数据的槽

1<current-user>
2  <template v-slot:default="slotProps">
3    {{ slotProps.user.firstName }}
4  </template>
5</current-user>

缩写

1参数之前的所有内容 (v-slot:) 替换为字符 #。例如 v-slot:header 可以被重写为 #header

Vscode
Reflect&Proxy

评论