Slots

Dynamic Slot Names

Vue allows dynamic slot names using v-slot:

<template v-slot:[dynamicSlotName]>
  <!-- content for the dynamic slot -->
</template>

Scoped Slots

Scoped slots allow passing data from the parent to the slot content. Use v-slot to receive and utilize slot props:

<MyComponent v-slot="{ text, count }">
  {{ text }} {{ count }}
</MyComponent>

Named Scoped Slots

Named scoped slots enable multiple slots in a component. Pass props to named slots:

<MyComponent>
  <template #header="headerProps">
    {{ headerProps }}
  </template>
</MyComponent>

Fancy List Example

Scoped slots are handy for components like <FancyList>, letting the parent control item styling:

Renderless Components

Renderless components encapsulate logic without rendering. They use scoped slots for visual output:

Fallthrough attributes and scoped slots enhance Vue component flexibility, providing powerful tools for customization.

Last updated