在 Vue.js 中,插槽(slot)是一种非常强大的功能,它允许我们定义组件模板的某些部分,而这些部分的内容将由父组件来决定。这对于创建可复用的组件非常有用,因为你可以定义组件的结构,但将具体的内容留给使用它的父组件来填充。
### 基本插槽
Vue.js 提供了默认插槽和具名插槽两种类型。
#### 默认插槽
默认插槽是最简单的插槽形式,它不需要命名。当组件中只有一个插槽时,默认插槽就会被使用。
**子组件(ChildComponent.vue)**:
```vue
我是子组件的标题
```
**父组件**:
```vue
```
#### 具名插槽
当组件中有多个插槽时,我们需要给插槽命名(即具名插槽),以便区分它们。
**子组件(ChildComponent.vue)**:
```vue
```
**父组件**:
```vue
```
### 作用域插槽
作用域插槽是一种特殊类型的插槽,它允许子组件将数据“回传”给插槽的内容。这意呀着父组件可以访问到子组件的数据。
**子组件(ChildComponent.vue)**:
```vue
```
**父组件**:
```vue
{{ slotProps.item.text }}
```
在作用域插槽中,`slotProps` 是一个对象,包含了传递给插槽的所有属性(在这个例子中是 `item`)。通过这种方式,父组件可以访问到子组件的 `items` 数组中的每个元素,并在插槽的内容中使用它们。