当前位置:首页 > VUE

vue slot实现

2026-01-07 17:39:02VUE

vue slot 的实现方法

在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式:

默认 slot

默认 slot 是最基础的 slot 使用方式,父组件可以在子组件标签内插入任意内容,这些内容会替换子组件中的 <slot> 标签。

子组件代码:

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

父组件代码:

<template>
  <child-component>
    <p>这是插入到子组件中的内容</p>
  </child-component>
</template>

具名 slot

具名 slot 允许父组件将内容插入到子组件的特定位置,通过 name 属性来标识不同的 slot。

子组件代码:

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

父组件代码:

<template>
  <child-component>
    <template v-slot:header>
      <h1>自定义头部</h1>
    </template>
    <p>默认 slot 内容</p>
    <template v-slot:footer>
      <p>自定义底部</p>
    </template>
  </child-component>
</template>

作用域 slot

作用域 slot 允许子组件将数据传递给父组件,父组件可以使用这些数据来渲染内容。

子组件代码:

<template>
  <div>
    <slot :user="user"></slot>
  </div>
</template>

<script>
export default {
  data() {
    return {
      user: {
        name: '张三',
        age: 25
      }
    }
  }
}
</script>

父组件代码:

<template>
  <child-component>
    <template v-slot:default="slotProps">
      <p>用户名: {{ slotProps.user.name }}</p>
      <p>年龄: {{ slotProps.user.age }}</p>
    </template>
  </child-component>
</template>

动态 slot 名

动态 slot 名允许通过变量动态指定 slot 名称,增加灵活性。

父组件代码:

<template>
  <child-component>
    <template v-slot:[dynamicSlotName]>
      <p>动态 slot 内容</p>
    </template>
  </child-component>
</template>

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

slot 缩写语法

Vue 提供了 v-slot 的缩写语法,可以用 # 代替 v-slot:

父组件代码:

<template>
  <child-component>
    <template #header>
      <h1>缩写语法头部</h1>
    </template>
  </child-component>
</template>

以上方法涵盖了 Vue slot 的主要使用场景,可以根据实际需求选择合适的方式来实现内容分发。

vue slot实现

标签: vueslot
分享给朋友:

相关文章

简易实现vue

简易实现vue

简易 Vue 实现思路 核心是数据劫持结合发布-订阅模式,通过 Object.defineProperty 或 Proxy 监听数据变化,触发视图更新。 数据劫持实现 class Observer…

vue实现静态查询

vue实现静态查询

Vue 实现静态查询 在 Vue 中实现静态查询通常指不依赖后端接口,直接在前端处理数据筛选或搜索功能。以下是几种常见实现方式: 使用计算属性过滤数据 通过计算属性对静态数据进行筛选,适合简单查询场…

项目基于vue实现

项目基于vue实现

基于Vue实现项目的关键方法 搭建基础环境 安装Node.js和npm/yarn,确保开发环境具备运行Vue的能力。通过Vue CLI快速初始化项目结构,选择所需配置(如Babel、Router、Vu…

vue实现条件判断

vue实现条件判断

Vue 条件判断实现方法 Vue 提供了多种方式实现条件判断,可以根据不同场景选择合适的方式。 v-if / v-else-if / v-else 这是 Vue 中最常用的条件渲染指令,根据表达式…

vue实现裁剪头像

vue实现裁剪头像

Vue 实现头像裁剪功能 实现头像裁剪功能通常需要结合第三方库如 cropperjs 或 vue-cropper。以下是两种常见实现方式: 使用 vue-cropper 库 安装依赖: n…

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [...t…