当前位置:首页 > VUE

vue插槽实现

2026-01-07 17:55:25VUE

插槽的基本概念

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

默认插槽

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

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

父组件使用

vue插槽实现

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

具名插槽

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

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

父组件使用

vue插槽实现

<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实现下载暂停功能 在Vue中实现下载暂停功能,通常需要结合XMLHttpRequest或Fetch API的AbortController来控制请求中断。以下是具体实现方法: 使用XMLH…

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…

vue无限菜单怎么实现

vue无限菜单怎么实现

实现 Vue 无限菜单的方法 递归组件实现嵌套菜单 使用 Vue 的递归组件特性可以轻松实现无限级嵌套菜单。通过组件调用自身的方式处理嵌套数据。 <template> <ul&…

vue实现跑车

vue实现跑车

Vue 实现跑车动画效果 使用 Vue 结合 CSS 动画可以实现跑车在屏幕上移动的效果。以下是一个完整的实现方案: 创建 Vue 组件结构 <template> <div c…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue 实现轮播

vue 实现轮播

Vue 实现轮播的方法 使用第三方库(如 Swiper) 安装 Swiper 库: npm install swiper 在 Vue 组件中引入 Swiper: <template&…