<slot>
标签定义一个插槽。父组件中的任何内容都将替换这个<slot>
标签。<!-- 子组件 -->
<template>
<div>
<slot></slot> <!-- 默认插槽 -->
</div>
</template>
<!-- 父组件 -->
<template>
<ChildComponent>
这里的内容会显示在子组件的插槽中。
</ChildComponent>
</template>
name
属性在子组件中定义多个插槽。<!-- 子组件 -->
<template>
<div>
<slot name="header"></slot> <!-- 具名插槽 -->
<slot></slot> <!-- 默认插槽 -->
<slot name="footer"></slot> <!-- 另一个具名插槽 -->
</div>
</template>
v-slot
指令指定要填充的插槽。<!-- 父组件 -->
<template>
<ChildComponent>
<template v-slot:header>
这里是头部内容。
</template>
这里是默认插槽的内容。
<template v-slot:footer>
这里是底部内容。
</template>
</ChildComponent>
</template>
<!-- 子组件 -->
<template>
<div>
<slot name="item" v-for="item in items" :item="item"></slot>
</div>
</template>
<!-- 父组件 -->
<template>
<ChildComponent>
<template v-slot:item="slotProps">
<div>{{ slotProps.item.name }}</div>
</template>
</ChildComponent>
</template>
<!-- 子组件 -->
<template>
<div>
<slot>默认内容</slot>
</div>
</template>
插槽是Vue组件系统中一个非常强大的特性,它提供了一种灵活的方式来创建高度定制的组件,同时保持组件逻辑的封装和可重用性。