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>