当前位置:首页 > VUE

vue slot实现

2026-01-12 17:59:29VUE

Vue Slot 实现方法

Vue 的 slot(插槽)是一种内容分发机制,允许父组件向子组件传递模板片段,实现灵活的组件复用。以下是 slot 的核心用法和实现方式:

默认插槽

子组件通过 <slot> 标签定义插槽位置,父组件传递的内容会替换该标签:

<!-- 子组件 Child.vue -->
<template>
  <div>
    <slot>默认内容(当父组件未传递内容时显示)</slot>
  </div>
</template>

<!-- 父组件 -->
<Child>
  <p>父组件插入的内容</p>
</Child>

具名插槽

通过 name 属性定义多个插槽,父组件用 v-slot 指令指定目标插槽:

<!-- 子组件 Layout.vue -->
<template>
  <div>
    <header>
      <slot name="header"></slot>
    </header>
    <main>
      <slot></slot>  <!-- 默认插槽 -->
    </main>
  </div>
</template>

<!-- 父组件 -->
<Layout>
  <template v-slot:header>
    <h1>标题内容</h1>
  </template>
  <p>主内容(自动插入默认插槽)</p>
</Layout>

作用域插槽

子组件通过插槽向父组件传递数据,父组件可基于数据自定义渲染逻辑:

<!-- 子组件 List.vue -->
<template>
  <ul>
    <li v-for="item in items" :key="item.id">
      <slot :item="item"></slot>
    </li>
  </ul>
</template>

<!-- 父组件 -->
<List :items="listData">
  <template v-slot:default="slotProps">
    <span>{{ slotProps.item.name }}</span>
  </template>
</List>

动态插槽名

通过动态指令参数绑定插槽名:

<template v-slot:[dynamicSlotName]>
  <!-- 内容 -->
</template>

缩写语法

  • v-slot:header 可缩写为 #header
  • 默认插槽可缩写为 v-slot="slotProps"#default="slotProps"

注意事项

  • 默认插槽和具名插槽不能混合使用(Vue 2 中会警告,Vue 3 中会报错)。
  • 作用域插槽的数据传递遵循单向数据流原则。
  • Vue 3 中废弃了 slotslot-scope 属性,统一使用 v-slot 指令。

vue slot实现

标签: vueslot
分享给朋友:

相关文章

vue实现多级组件

vue实现多级组件

实现多级组件的基本结构 在Vue中实现多级组件通常涉及父子组件嵌套,通过props向下传递数据,通过$emit向上传递事件。多级组件的核心是递归或动态组件渲染。 <!-- 父组件 Paren…

vue实现visual

vue实现visual

Vue 实现可视化(Visual)的常见方法 在 Vue 中实现可视化通常涉及数据可视化库的集成,以下是几种主流方案: 使用 ECharts ECharts 是一个强大的 JavaScript…

vue插槽实现

vue插槽实现

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

vue分类实现

vue分类实现

Vue分类实现方法 在Vue中实现分类功能通常涉及数据分组、动态渲染和交互逻辑。以下是几种常见的实现方式: 基于计算属性的分类 通过计算属性对原始数据进行分组处理,适合静态或少量数据分类: com…

vue底层实现

vue底层实现

Vue.js 的底层实现原理 Vue.js 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现细节: 响应式系统 Vue…

vue实现筛选

vue实现筛选

实现筛选功能的基本思路 在Vue中实现筛选功能通常需要结合数据绑定、计算属性和方法。筛选的核心逻辑是根据用户输入的条件过滤原始数据列表,并动态更新显示结果。 数据准备 定义一个数组存储原始数据,另…