1.插槽是什么?
插槽(slot)是 vue 为组件的封装者提供的能力。允许开发者在封装组件时,把不确定的、希望由用户指定的部分内容定义为插槽。
可以把插槽认为是组件封装期间,为用户预留的内容的占位符。
2.插槽的基础用法
使用<slot>声明一个插槽,<slot>默认需要填写name属性,如果没有填写name,则默认name为default,自定义的内容用<template>标签包裹,<template>不会渲染到页面上,只有包裹作用。
代码示例:
<A>
<template>
<div>
我是用户自定义的内容,我会在A组件插槽展示
</div>
</template>
</A>
<template>
<header>我是头部</header>
<main>
<!-- slot 用户预定义内容的占位符 -->
<!-- A组件使用时,用户自定义的内容会在这里展示 -->
<slot>我先占个位</slot>
</main>
<footer>我是底部</footer>
</template>
2.1没有插槽的预定义内容会丢弃
如果在封装组件时没有预留任何 <slot> 插槽,则用户提供的任何自定义内容都会被丢弃。代码示例:
<A>
<template>
<div>
我是用户自定义的内容,但我没有找到插槽插入
</div>
</template>
</A>
<template>
<header>我是头部</header>
<main>
<!-- slot 用户预定义内容的占位符 -->
<!-- A组件使用时,用户自定义的内容会在这里展示 -->
<!-- <slot>我先占个位</slot> -->
</main>
<footer>我是底部</footer>
</template>
2.2后备内容
如果用户没有传入自定义内容