当前位置:首页 > VUE

vue实现slot

2026-03-07 07:53:20VUE

Vue 插槽(Slot)的实现

Vue 的插槽(Slot)是一种组件间内容分发的机制,允许父组件向子组件传递模板片段。插槽分为默认插槽、具名插槽和作用域插槽三种类型。

默认插槽

默认插槽是最基础的插槽形式,子组件通过 <slot> 标签定义插槽位置,父组件可以在子组件标签内部传递内容。

子组件定义:

<template>
  <div>
    <h2>子组件标题</h2>
    <slot></slot>
  </div>
</template>

父组件使用:

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

具名插槽

具名插槽允许定义多个插槽,通过 name 属性区分不同插槽。

子组件定义:

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

父组件使用:

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

作用域插槽

作用域插槽允许子组件向父组件传递数据,父组件可以自定义渲染逻辑。

子组件定义:

<template>
  <div>
    <slot :item="item" :index="index"></slot>
  </div>
</template>

<script>
export default {
  data() {
    return {
      item: '子组件数据',
      index: 1
    }
  }
}
</script>

父组件使用:

<template>
  <ChildComponent>
    <template v-slot:default="slotProps">
      <p>接收到的数据: {{ slotProps.item }}, 索引: {{ slotProps.index }}</p>
    </template>
  </ChildComponent>
</template>

动态插槽名

Vue 2.6.0+ 支持动态插槽名,通过方括号语法实现。

父组件使用:

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

<script>
export default {
  data() {
    return {
      dynamicSlotName: 'header'
    }
  }
}
</script>

缩写语法

Vue 提供了插槽的缩写语法,v-slot: 可以简写为 #

父组件使用:

vue实现slot

<template>
  <ChildComponent>
    <template #header>
      <h1>缩写语法头部内容</h1>
    </template>
  </ChildComponent>
</template>

插槽机制为 Vue 组件提供了灵活的内容分发能力,通过合理使用可以构建高度可复用的组件结构。

标签: vueslot
分享给朋友:

相关文章

vue自己实现下拉导航

vue自己实现下拉导航

实现下拉导航的基本思路 在Vue中实现下拉导航,可以通过结合Vue的响应式数据和事件绑定特性来完成。主要思路是利用v-show或v-if控制下拉菜单的显示与隐藏,并通过鼠标事件或点击事件触发状态变化。…

实现vue

实现vue

安装Vue.js 通过npm安装Vue.js是最常见的方式。确保已安装Node.js和npm,运行以下命令: npm install vue 或者使用CDN直接引入: <script src…

vue实现tablegrid

vue实现tablegrid

Vue 实现 TableGrid 的方法 使用 Element UI 的 Table 组件 Element UI 提供了强大的 Table 组件,可以快速实现表格布局。安装 Element UI 后,…

vue实现过程

vue实现过程

Vue 的实现过程 Vue 的实现过程可以分为多个核心模块,包括响应式系统、虚拟 DOM、模板编译等。以下是 Vue 的主要实现过程分析。 响应式系统 Vue 的响应式系统基于 Object.def…

vue分类实现

vue分类实现

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

vue实现ios

vue实现ios

Vue 实现 iOS 风格应用 使用 Vue 实现 iOS 风格的应用,可以通过结合 UI 框架和自定义样式来达成目标。以下是具体方法和步骤: 选择 iOS 风格的 UI 框架 Vue 生态中有多…