当前位置:首页 > 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:

父组件代码:

vue slot实现

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

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

标签: vueslot
分享给朋友:

相关文章

vue表格重置怎么实现

vue表格重置怎么实现

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

vue实现跑车

vue实现跑车

Vue 实现跑车动画效果 使用 Vue 结合 CSS 动画可以实现跑车在屏幕上移动的效果。以下是一个完整的实现方案: 创建 Vue 组件结构 <template> <div c…

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

vue observer实现

vue observer实现

Vue Observer 实现原理 Vue 的响应式系统核心是通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)实现的 Observer 模式。以下是关键实现细…

vue cli 实现

vue cli 实现

Vue CLI 实现步骤 安装 Vue CLI 确保 Node.js 版本在 8.9 或以上。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 创建新项目 使…

vue实现刷卡

vue实现刷卡

Vue 实现刷卡效果 在 Vue 中实现刷卡效果可以通过 CSS 动画和 Vue 的过渡系统结合完成。以下是一种常见的实现方式: 基础实现方法 安装 Vue 过渡依赖(如果尚未安装): npm i…