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

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

相关推荐
deli0072 小时前
Redis 缓存穿透、击穿、雪崩:9 组流量实测数据库怎么被打穿
前端
江华森2 小时前
5Mbps 小水管也能扛:K3s 上 k6 压测 + HPA 弹性伸缩实测
前端
shuangyueliao2 小时前
103 个小游戏的商店素材,我一张图都没手动做:截图 / 封面 / 打包 / 提审全自动
前端
用户2763965765102 小时前
放弃 JWT 后,我给 FastAPI 游戏服务端手撸了一套 token session
javascript
ZhengEnCi2 小时前
前端项目为什么需要一份统一的 theme.css:用 CSS 变量管住全局样式与主题切换
前端·css·前端工程化
wordbaby2 小时前
一次微信小程序 `web-view` 跳转原生页回跳后 H5 白屏的排查与修复(Hash 路由污染)
前端
用户721880438352 小时前
密码骰子:结合AIUI在眼镜上生成一串16位密码
前端
江华森3 小时前
全链路可观测落地记:kube-prometheus-stack 在 K3s 上的 8 个坑与一整套修复脚本
前端
用户84298142418103 小时前
从 JavaScript 到可运行的字节码 - ByteJS 使用指南
javascript
deli0073 小时前
27 寸 4K 开 125% 为什么发虚?PPI 和缩放一次算清
前端