作用域插槽是vue中父组件在使用子组件插槽时能访问子组件内部数据的机制,子组件通过v-slot暴露作用域对象,父组件可解构使用其字段,作用域仅限插槽内且不污染父组件。

作用域插槽(Scoped Slot)是 Vue.js 中实现父子组件灵活数据通信的重要机制,核心在于“父组件使用子组件的插槽时,能访问子组件内部的数据”。它不是把数据“传给”子组件,而是子组件把数据“提供出来”,由父组件在插槽内容中按需使用。解构赋值让这种使用更简洁、语义更清晰。
作用域插槽的数据传递本质
子组件通过 v-slot(或旧写法 slot-scope)向父组件暴露一个作用域对象,该对象的属性即为可被父组件使用的数据。这个对象由子组件在渲染插槽时调用 <slot :xxx="value" :yyy="other"></slot> 显式传入。
- 子组件决定暴露哪些字段(如
:item、:index、:isLast),不暴露的父组件无法访问 - 父组件在使用时接收的是一个对象,例如
{ item: {...}, index: 0, isLast: false } - 该对象的作用域仅限于当前插槽内容内,不会污染父组件 data 或 props
解构赋值在 v-slot 中的写法与优势
Vue 支持在 v-slot 指令中直接使用 ES6 解构语法,省去手动取属性的步骤,代码更紧凑、意图更明确。

