当前位置:首页 > VUE

vue slot实现

2026-03-27 10:23:00VUE

Vue Slot 实现方法

Vue 的插槽(Slot)是一种强大的内容分发机制,允许父组件向子组件传递模板片段。以下是几种常见的插槽实现方式:

默认插槽

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

子组件定义:

<template>
  <div>
    <slot></slot>
  </div>
</template>

父组件使用:

<ChildComponent>
  <p>这段内容会显示在子组件的slot位置</p>
</ChildComponent>

具名插槽

当需要多个插槽时,可以使用具名插槽。子组件通过 name 属性为插槽命名,父组件通过 v-slot 指令指定内容插入哪个插槽。

子组件定义:

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

父组件使用:

vue slot实现

<ChildComponent>
  <template v-slot:header>
    <h1>这是头部内容</h1>
  </template>

  <p>这是默认插槽内容</p>

  <template v-slot:footer>
    <p>这是底部内容</p>
  </template>
</ChildComponent>

作用域插槽

作用域插槽允许子组件向插槽传递数据,父组件可以访问这些数据并决定如何渲染。

子组件定义:

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

<script>
export default {
  data() {
    return {
      item: { name: '示例数据' },
      index: 0
    }
  }
}
</script>

父组件使用:

<ChildComponent>
  <template v-slot:default="slotProps">
    <p>{{ slotProps.item.name }}</p>
    <p>{{ slotProps.index }}</p>
  </template>
</ChildComponent>

动态插槽名

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

vue slot实现

父组件使用:

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

缩写语法

v-slot 可以缩写为 #,使模板更简洁。

父组件使用:

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

独占默认插槽的缩写

当只有默认插槽时,可以直接在组件上使用 v-slot

父组件使用:

<ChildComponent v-slot:default="slotProps">
  <p>{{ slotProps.item.name }}</p>
</ChildComponent>

Vue 插槽系统提供了灵活的内容分发机制,可以根据具体需求选择合适的插槽类型和用法。

标签: vueslot
分享给朋友:

相关文章

vue实现点击样式

vue实现点击样式

Vue 实现点击样式的方法 在 Vue 中实现点击样式可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-bind:class 动态绑定类名 通过数据驱动的方式动态切换类名,结合 CS…

vue实现收起展开面板

vue实现收起展开面板

实现收起展开面板的方法 在Vue中实现收起展开面板功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-show或v-if控制显示隐藏 利用Vue的指令可以轻松实现面板的展开和收起: &l…

vue 实现在线预览

vue 实现在线预览

Vue 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template> &…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…

vue实现分栏

vue实现分栏

Vue实现分栏的常见方法 使用CSS Flexbox布局 通过Flexbox可以快速实现分栏效果,适合大多数响应式布局场景 <template> <div class="con…

vue实现增删

vue实现增删

Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是基于 Vue 2 或 Vue 3 的实现方法: 数据定义 初始化一个数组用于存储列表数据,并在 Vue 实…