当前位置:首页 > VUE

vue插槽实现

2026-01-07 17:55:25VUE

插槽的基本概念

Vue插槽(Slot)是一种内容分发机制,允许父组件向子组件传递模板片段,子组件通过<slot>标签定义接收位置。插槽的核心作用是增强组件的灵活性和复用性。

默认插槽

子组件中定义<slot>标签,父组件传入的内容会替换该标签。若父组件未提供内容,则显示<slot>内的默认内容。
子组件示例

<template>
  <div>
    <slot>默认内容</slot>
  </div>
</template>

父组件使用

<ChildComponent>替换默认内容</ChildComponent>

具名插槽

通过name属性为插槽命名,实现多内容分发。父组件使用v-slot:name#name指令指定插入位置。
子组件示例

<template>
  <div>
    <slot name="header"></slot>
    <slot></slot> <!-- 默认插槽 -->
    <slot name="footer"></slot>
  </div>
</template>

父组件使用

<ChildComponent>
  <template v-slot:header>头部内容</template>
  默认插槽内容
  <template #footer>底部内容</template>
</ChildComponent>

作用域插槽

子组件通过插槽向父组件传递数据,父组件通过v-slot:name="props"接收数据并自定义渲染逻辑。
子组件示例

<template>
  <div>
    <slot name="item" v-for="item in list" :item="item"></slot>
  </div>
</template>

父组件使用

<ChildComponent>
  <template #item="{ item }">
    <span>{{ item.name }}</span>
  </template>
</ChildComponent>

动态插槽名

通过动态指令绑定插槽名,适用于需要动态切换插槽的场景。
示例

<ChildComponent>
  <template v-slot:[dynamicSlotName]>动态内容</template>
</ChildComponent>

插槽的注意事项

  • 默认插槽的缩写语法为v-slot#default
  • 作用域插槽的数据仅在插槽模板内可用。
  • Vue 3中废弃了slotslot-scope特性,统一使用v-slot

vue插槽实现

标签: 插槽vue
分享给朋友:

相关文章

vue实现图片轮播

vue实现图片轮播

使用 Swiper 实现图片轮播 安装 Swiper 依赖 npm install swiper 在 Vue 组件中引入 Swiper <template> <div…

vue实现滚动中断

vue实现滚动中断

Vue 实现滚动中断的方法 在 Vue 中实现滚动中断通常涉及监听滚动事件,并在特定条件下阻止默认行为或停止滚动。以下是几种常见方法: 监听滚动事件并阻止默认行为 通过 @scroll 或 @whe…

vue实现放大效果

vue实现放大效果

使用 CSS transform 实现放大效果 在 Vue 中实现放大效果可以通过 CSS 的 transform: scale() 属性。这种方法简单高效,适合大多数交互场景。 定义一个 CSS…

vue如何实现冒泡

vue如何实现冒泡

Vue 实现冒泡排序 在 Vue 中实现冒泡排序,可以通过数据绑定和响应式特性动态展示排序过程。以下是一个完整的实现示例,包含代码和详细说明。 数据准备 在 Vue 的 data 中定义一个数组作为…

vue实现多级表头

vue实现多级表头

Vue 实现多级表头的方法 使用 el-table 组件 Element UI 的 el-table 组件支持多级表头的实现,通过嵌套 el-table-column 即可完成。 <el-t…

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [..…