当前位置:首页 > VUE

vue插槽怎么实现的

2026-02-23 18:43:52VUE

Vue 插槽的实现方式

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

默认插槽

子组件通过 <slot> 标签定义插槽位置,父组件传递的内容会替换该标签。若父组件未提供内容,则显示 <slot> 内的默认内容。

<!-- 子组件 Child.vue -->
<template>
  <div>
    <slot>默认内容</slot>
  </div>
</template>

<!-- 父组件 -->
<Child>
  <p>替换默认内容</p>
</Child>

具名插槽

通过 name 属性为插槽命名,实现多插槽内容分发。父组件使用 v-slot 指令或 # 缩写指定插槽名。

<!-- 子组件 Layout.vue -->
<template>
  <div>
    <header><slot name="header"></slot></header>
    <main><slot></slot></main>
  </div>
</template>

<!-- 父组件 -->
<Layout>
  <template #header>
    <h1>标题</h1>
  </template>
  <p>主内容</p>
</Layout>

作用域插槽

子组件通过插槽属性向父组件传递数据,父组件通过 v-slot 接收数据。

<!-- 子组件 ScopedSlot.vue -->
<template>
  <ul>
    <li v-for="item in items" :key="item.id">
      <slot :item="item"></slot>
    </li>
  </ul>
</template>

<!-- 父组件 -->
<ScopedSlot :items="list">
  <template v-slot="{ item }">
    <span>{{ item.text }}</span>
  </template>
</ScopedSlot>

动态插槽名

通过动态指令参数绑定插槽名,实现灵活的内容分发。

<template>
  <Child>
    <template #[dynamicSlotName]>
      动态内容
    </template>
  </Child>
</template>

插槽原理

Vue 在编译阶段会将插槽内容转化为函数,子组件通过调用这些函数渲染内容。作用域插槽本质上是向函数传递参数。虚拟 DOM 比对时,插槽内容会被视为子组件的子节点。

注意事项

  • 插槽内容在父组件作用域编译,但作用域插槽可访问子组件数据。
  • v-slot 只能用于 <template> 或组件标签。
  • Vue 3 统一了 slotslot-scope 语法为 v-slot

vue插槽怎么实现的

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

相关文章

vue实现过程

vue实现过程

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

vue实现复选

vue实现复选

Vue 实现复选框 在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式: 单个复选框…

vue实现海报

vue实现海报

Vue 实现海报生成方案 使用 html2canvas 库 html2canvas 是一个将 HTML 元素转换为 Canvas 的库,适合将 Vue 组件渲染为海报图片 安装依赖: npm…

vue 实现注册

vue 实现注册

Vue 实现注册功能 注册功能通常包括表单验证、数据提交和用户反馈。以下是实现注册功能的步骤: 1. 创建注册表单组件 在 Vue 项目中创建一个注册表单组件,包含用户名、邮箱、密码等输入字段。…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ dat…

vue实现注销

vue实现注销

实现用户注销功能 在Vue应用中实现用户注销功能通常涉及清除用户会话、重置应用状态并跳转到登录页面。以下是具体实现方法: 清除用户认证信息 使用Vuex或Pinia管理用户状态时,需在注销时重置存…