vue3插槽的使用

1. 默认插槽

默认插槽是最基本的形式,用于插入任何未明确命名的内容。

子组件 (Child.vue) 示例:

复制代码
<template>
  <div class="wrapper">
    <header>这是头部</header>
    <slot></slot> <!-- 默认插槽位置 -->
    <footer>这是尾部</footer>
  </div>
</template>

父组件使用示例:

复制代码
<child>
  <p>这里是父组件插入的默认内容</p>
</child>

2. 具名插槽

具名插槽允许你有选择性地插入内容到组件的特定位置。

子组件 (Child.vue) 示例:

复制代码
<template>
  <div class="container">
    <slot name="header"></slot>
    <slot name="main"></slot>
    <slot name="footer"></slot>
  </div>
</template>

父组件使用示例

复制代码
<child>
  <template v-slot:header>
    <h2>自定义头部</h2>
  </template>
  <template v-slot:main>
    <p>主要内容区域</p>
  </template>
  <template v-slot:footer>
    <p>版权信息</p>
  </template>
</child>

3. 作用域插槽

作用域插槽可以接收来自子组件的数据,使插槽内容能基于这些数据动态变化。

子组件 (Child.vue) 示例:

复制代码
<template>
  <div>
    <slot v-bind:user="userData"></slot>
  </div>
</template>

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

父组件使用示例:

复制代码
<child>
  <template v-slot="{ user }">
    <p>姓名:{{ user.name }}</p>
    <p>年龄:{{ user.age }}</p>
  </template>
</child>

注意事项

  • Vue 2.x 使用 slotslot-scope,而Vue 3.x 及更高版本推荐使用 v-slot 语法糖。
  • 动态插槽可以通过计算属性或其他动态属性值来决定使用哪个插槽,但通常情况下直接使用上述方式已足够满足需求。

通过合理使用插槽,你可以设计出高度可复用和灵活的组件。

相关推荐
鹿心肺语4 分钟前
前端HTML转PDF的两种主流方案深度解析
前端·javascript
海石22 分钟前
去到比北方更北的地方—2025年终总结
前端·ai编程·年终总结
一个懒人懒人29 分钟前
Promise async/await与fetch的概念
前端·javascript·html
Mintopia35 分钟前
Web 安全与反编译源码下的权限设计:构筑前后端一致的防护体系
前端·安全
输出输入37 分钟前
前端核心技术
开发语言·前端
Mintopia42 分钟前
Web 安全与反编译源码下的权限设计:构建前后端一体的信任防线
前端·安全·编译原理
林深现海1 小时前
Jetson Orin nano/nx刷机后无法打开chrome/firefox浏览器
前端·chrome·firefox
EchoEcho1 小时前
深入理解 Vue.js 渲染机制:从声明式到虚拟 DOM 的完整实现
vue.js
黄诂多1 小时前
APP原生与H5互调Bridge技术原理及基础使用
前端
前端市界1 小时前
用 React 手搓一个 3D 翻页书籍组件,呼吸海浪式翻页,交互体验带感!
前端·架构·github