Vue-面试-插槽slot
2026年10月16日·Admin·1 次浏览
面试题:插槽有哪些?作用域插槽解决什么问题?
分类
- 默认插槽:父传一段模板,子用
<slot></slot>占位。 - 具名插槽:
<slot name="header">,父用v-slot:header或#header。 - 作用域插槽:子把内部数据通过
slotprops 暴露给父,父在插槽模板里使用。
作用域插槽(高频)
子组件:
<slot :row="row" :index="index"></slot>
父组件:
<Child v-slot="{ row, index }">
{{ row.name }}
</Child>
解决的问题:父需要自定义子组件某块 UI 的渲染方式,同时又要用到子组件内部才能拿到的数据(如表格行数据、树节点)。
Vue3 中 统一为 v-slot(无 slot-scope 旧名)。
编译层面(了解即可)
插槽内容实际是父作用域编译的函数传入子组件,在子组件渲染时调用,因此插槽内变量默认解析父作用域,子传出的数据通过参数注入。