Vue v-slot 指令

实例

使用 v-slot 指令把 'Hello!' 消息发送到 <slot-comp> 组件内的 'bottomSlot'。

  1. <slot-comp v-slot:bottomSlot>'Hello!'</slot-comp>

定义与用法

v-slot 指令用于将内容定向到命名的 slot。

v-slot: 的简写为 #

v-slot 指令还可以用于从 范围slot 接收数据,这是通过在子组件中使用 v-bind 提供的。

v-slot 可以用于组件,也可以用于内置的 <template> 元素。

当我们想将内容分配给组件中的多个 slot 时,v-slot 用于 <template> 元素。


更多实例

实例 1

<template> 元素上使用 v-slot 将内容分配给同一组件中的两个不同 slot。

App.vue:

  1. <template>
  2. <h1>App.vue</h1>
  3. <p>The component has two slots, and the template element is used to assign content to both.</p>
  4. <slot-comp>
  5. <template v-slot:topSlot>
  6. <div>
  7. <p>Tigers are beautiful!</p>
  8. <img src="/example/vue/img_tiger.svg" alt="tiger" width="100">
  9. </div>
  10. </template>
  11. <template v-slot:bottomSlot>
  12. <div>
  13. <p>Whales can be very big</p>
  14. </div>
  15. </template>
  16. </slot-comp>
  17. </template>

SlotComp.vue:

  1. <template>
  2. <hr>
  3. <h3>Component</h3>
  4. <slot name="topSlot"></slot>
  5. <slot name="bottomSlot"></slot>
  6. </template>
实例 2

使用 v-slot 将内容定向到默认 slot。

SlotComp.vue:

  1. <h3>Component</h3>
  2. <div>
  3. <slot></slot>
  4. </div>
  5. <div>
  6. <slot name="bottomSlot"></slot>
  7. </div>

App.vue:

  1. <h1>App.vue</h1>
  2. <p>The component has two div tags with one slot in each.</p>
  3. <slot-comp v-slot:default>'Default slot'</slot-comp>
实例 3

使用 v-slot: 的简写 #

App.vue:

  1. <h1>App.vue</h1>
  2. <p>The component has two div tags with one slot in each.</p>
  3. <slot-comp #topSlot>'Hello!'</slot-comp>

SlotComp.vue:

  1. <h3>Component</h3>
  2. <div>
  3. <slot name="topSlot"></slot>
  4. </div>
  5. <div>
  6. <slot name="bottomSlot"></slot>
  7. </div>
实例 4

使用 v-slot 从 范围slot 接收数据。

App.vue:

  1. <slot-comp v-slot:"dataFromSlot">
  2. <h2>{{ dataFromSlot.lclData }}</h2>
  3. </slot-comp>

分类导航