当前位置:首页 > VUE

vue插槽实现

2026-03-27 10:51:07VUE

Vue 插槽的基本概念

插槽(Slot)是 Vue 组件化开发中的重要特性,允许父组件向子组件传递模板片段,实现内容分发。插槽的核心作用是增强组件的灵活性和复用性。

默认插槽

子组件通过 <slot> 标签定义插槽位置,父组件在子组件标签内插入内容时会替换插槽。

子组件定义

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

父组件使用

<template>
  <ChildComponent>
    <p>这是插入到默认插槽的内容</p>
  </ChildComponent>
</template>

具名插槽

通过 name 属性为插槽命名,实现多内容分发。

子组件定义

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

父组件使用
使用 v-slot 指令(缩写为 #)指定插槽名称。

<template>
  <ChildComponent>
    <template v-slot:header>
      <h1>标题内容</h1>
    </template>
    <template #body> <!-- 缩写语法 -->
      <p>正文内容</p>
    </template>
  </ChildComponent>
</template>

作用域插槽

子组件通过插槽向父组件传递数据,父组件可以基于子组件的数据定制渲染内容。

子组件定义

<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 v-slot:[dynamicSlotName]>
      <p>动态插槽内容</p>
    </template>
  </ChildComponent>
</template>
<script>
export default {
  data() {
    return { dynamicSlotName: "header" };
  }
};
</script>

插槽的默认内容

子组件可以在 <slot> 内定义默认内容,当父组件未提供插槽内容时显示。

vue插槽实现

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

注意事项

  • 插槽内容在父组件作用域编译,但作用域插槽的数据来自子组件。
  • v-slot 只能用于 <template> 或组件标签(Vue 2.6+)。
  • 默认插槽的 v-slot 可简写为 #default

通过合理使用插槽,可以实现高度可定制的组件设计,满足复杂场景的需求。

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

相关文章

vue实现录音文件播放

vue实现录音文件播放

使用 Vue 实现录音文件播放 准备工作 确保项目中已安装必要的依赖,如 vue-audio-recorder 或原生 Web Audio API。录音文件播放通常涉及录音、存储和播放三个核心环节。…

vue实现缩放

vue实现缩放

Vue 实现缩放的方法 在 Vue 中实现缩放功能可以通过多种方式完成,以下是一些常见的方法: 使用 CSS transform 属性 通过 CSS 的 transform: scale() 属性可…

vue compile 实现

vue compile 实现

Vue 编译实现原理 Vue 的编译过程将模板字符串转换为渲染函数,主要分为解析、优化和代码生成三个阶段。 解析阶段(Parse) 将模板字符串转换为抽象语法树(AST)。Vue 使用正则表达式和有…

vue实现系统

vue实现系统

Vue 实现系统的核心方法 使用 Vue.js 构建系统时,需结合其响应式特性与组件化开发模式。以下为关键实现路径: 项目初始化与工程配置 通过 Vue CLI 或 Vite 创建项目骨架,推荐选择…

vue实现spa

vue实现spa

Vue 实现 SPA(单页应用)的步骤 创建 Vue 项目 使用 Vue CLI 快速初始化一个 Vue 项目,确保安装了 Vue Router 作为路由管理工具。运行以下命令创建项目: vue c…

vue ui实现创建vue项目

vue ui实现创建vue项目

使用 Vue UI 创建 Vue 项目 Vue UI 是 Vue CLI 提供的图形化界面工具,可以通过可视化操作创建和管理 Vue 项目。 安装 Vue CLI 确保已安装 Node.js(建议版…