Back
VueMediumNew

What are slots and what's the difference between default, named, and scoped slots?

Content projection from parent into child template

Ideal Answer

Slots let a parent component pass template content into a child, enabling flexible composition.

  • Default slot: A single unnamed content outlet: <slot></slot>.
  • Named slots: Multiple slots identified by name, e.g. <slot name="header"></slot>, filled via <template #header>...</template>.
  • Scoped slots: The child passes data back up to the parent's slot content via slot props: <slot :item="item"></slot>, consumed as <template #default="{ item }">.
JavaScript
<!-- Child.vue -->
<slot name="item" :data="row"></slot>

<!-- Parent.vue -->
<Child>
  <template #item="{ data }">{{ data.name }}</template>
</Child>