Skip to content

6.5 插槽

6.5.1 匿名插槽

  • 定义:
html
<button>
    <slot></slot><!-- name默认default -->
</button>
  • 使用:
html
  <component>登陆</component>

6.5.2 具名插槽

  • 定义:
html
<div>
  <slot name="two"></slot>
  <slot name="one">默认值</slot>
  <slot name="three"></slot>
</div>
  • 使用:
html

  <component>
    <template v-slot:one>
      <li></li>
    </template>
    <!-- 具名插槽缩写 -->
    <template #two> 
      <li></li>
    </template>
    <!-- 动态插槽名 -->
    <template v-slot:[dynamicSlotName]> 
      <li></li>
    </template>
    <!-- 动态插槽名缩写 -->
    <template #[dynamicSlotName]> 
      <li></li>
    </template>
  </component>

6.5.3 作用域插槽

父组件通过插槽prop调用子组件的数据

  • 定义:
html

<div>
  <!-- 插槽名称user 插槽prop参数名user -->
  <slot v-bind:user="userName" name="user">
    {{ userName.lastName }}
  </slot>
</div>
js
  data() {
    return {
      userName: {
        firstName: "jaqi",
      },
    };
  },
  • 使用:
html
  <div id="app">
  <component>
    <!-- 获取具名插槽user,的user参数-->
    <template v-slot:user="slotProps"> 
      {{ slotProps.user.firstName }}
    </template>
  </component>
</div>
  • 解构插槽Prop:
html
  <div id="app">
  <component>
    <!-- 获取具名插槽user,并重命名user为name -->
    <template v-slot:user="{user:name}">  
      {{ name.firstName }}
    </template>
  </component>
</div>