当前位置:首页 > VUE

vue插槽实现

2026-03-07 01:27:45VUE

Vue 插槽的基本概念

插槽(Slot)是 Vue 组件化开发中的重要特性,允许父组件向子组件传递模板片段,实现内容分发。插槽分为默认插槽、具名插槽和作用域插槽三种类型。

默认插槽

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

<template>
  <div>
    <h2>子组件标题</h2>
    <slot></slot> <!-- 默认插槽 -->
  </div>
</template>

父组件使用:

<template>
  <ChildComponent>
    <p>这是插入到子组件的内容</p>
  </ChildComponent>
</template>

具名插槽

通过 name 属性为插槽命名,实现多内容分发。
子组件示例:

vue插槽实现

<template>
  <div>
    <slot name="header"></slot>
    <slot name="body"></slot>
  </div>
</template>

父组件使用:
使用 v-slot 指令或 # 缩写指定插槽名:

<template>
  <ChildComponent>
    <template v-slot:header>
      <h3>头部内容</h3>
    </template>
    <template #body>
      <p>主体内容</p>
    </template>
  </ChildComponent>
</template>

作用域插槽

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

vue插槽实现

<template>
  <div>
    <slot :item="itemData"></slot>
  </div>
</template>
<script>
export default {
  data() {
    return { itemData: { text: '子组件数据' } };
  }
};
</script>

父组件使用:
通过 v-slot 接收子组件传递的数据:

<template>
  <ChildComponent>
    <template v-slot="slotProps">
      <p>{{ slotProps.item.text }}</p>
    </template>
  </ChildComponent>
</template>

动态插槽名

通过动态指令绑定插槽名,实现灵活分发。
父组件示例:

<template>
  <ChildComponent>
    <template #[dynamicSlotName]>
      <p>动态插槽内容</p>
    </template>
  </ChildComponent>
</template>
<script>
export default {
  data() {
    return { dynamicSlotName: 'customSlot' };
  }
};
</script>

插槽的默认内容

子组件可在 <slot> 内部定义默认内容,当父组件未传递内容时显示。
子组件示例:

<template>
  <slot>
    <p>默认内容(父组件未传递时显示)</p>
  </slot>
</template>

注意事项

  • 插槽内容在父组件作用域编译,无法直接访问子组件数据(作用域插槽除外)。
  • v-slot 可简写为 #,但需注意具名插槽和作用域插槽的语法差异。
  • Vue 3 中废弃了 slotslot-scope 属性,统一使用 v-slot

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

相关文章

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <ul…

vue ref实现

vue ref实现

Vue 中 ref 的实现 在 Vue 中,ref 是一个用于创建响应式引用的 API,适用于基本类型和对象。以下是 ref 的核心实现原理和使用方法。 基本实现原理 ref 通过 Reactive…

vue实现白板

vue实现白板

Vue实现白板功能 使用Vue实现白板功能可以通过HTML5的Canvas API结合Vue的响应式特性来完成。以下是实现白板功能的关键步骤: 安装依赖 在Vue项目中安装必要的依赖,如vue-dr…

轮播vue实现

轮播vue实现

使用 Vue 实现轮播功能 基础轮播实现 安装依赖(如使用 Swiper): npm install swiper vue-awesome-swiper 组件代码示例: <template&…

vue实现 页面

vue实现 页面

Vue 实现页面的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 是官方脚手架工具,适合传统项目;Vite 提供更快的现代构建体验。 npm cre…