slot

1. slot 是什么

slot(插槽)是 Vue 组件中的内容分发机制,允许父组件向子组件的指定位置插入自定义内容,实现组件的 “模板复用 + 内容定制”,让组件更灵活通用。

2. 使用场景

  • 组件内容自定义:封装通用组件(如弹窗、卡片)时,让父组件自定义组件内部的部分内容(如弹窗的标题、卡片的主体);
  • 组件结构扩展:复杂组件(如表格、导航栏)中,允许父组件插入自定义的列、菜单项;
  • 组件逻辑与视图分离:子组件负责逻辑 / 布局,父组件负责具体视图内容的展示。

3. 分类

分类 说明
匿名插槽 无名称的插槽,父组件插入的内容默认填充到该插槽(一个组件仅一个匿名插槽)
具名插槽 带名称的插槽(通过name属性标识),父组件可指定内容插入到对应名称的插槽
作用域插槽 子组件向父组件传递数据的插槽,父组件可接收子组件的数据并自定义渲染内容

4. 原理分析

slot 的本质是组件编译时的内容分发标记

  • 子组件中slot标签会被标记为 “内容插入点”;
  • 父组件中插入到子组件标签内的内容,会被编译为 “待分发内容”;
  • Vue 在渲染时,将 “待分发内容” 匹配到子组件对应的slot位置,完成内容注入。