当前位置:首页 > uni-app

uniapp 插槽使用

2026-02-05 22:30:54uni-app

插槽的基本概念

插槽(Slot)是组件化开发中的重要概念,允许在组件内部预留位置,由父组件动态填充内容。UniApp基于Vue.js,完全支持Vue的插槽机制。

默认插槽使用

父组件通过子组件标签内部的内容传递到子组件的<slot>标签位置。子组件模板中定义<slot>标签作为占位符。

子组件示例代码:

<template>
  <view class="child-component">
    <slot></slot>
  </view>
</template>

父组件调用示例:

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

具名插槽使用

当需要多个插槽时,使用具名插槽实现精准内容分发。子组件通过name属性命名插槽,父组件通过v-slot指令指定插槽名称。

子组件定义多个插槽:

<template>
  <view>
    <slot name="header"></slot>
    <slot name="content"></slot>
    <slot name="footer"></slot>
  </view>
</template>

父组件按名称分发内容:

<child-component>
  <template v-slot:header>
    <text>头部内容</text>
  </template>
  <template v-slot:content>
    <text>主体内容</text>
  </template>
  <template v-slot:footer>
    <text>底部内容</text>
  </template>
</child-component>

作用域插槽使用

当子组件需要向插槽传递数据时,使用作用域插槽。子组件在<slot>标签上绑定属性,父组件通过v-slot接收数据。

子组件绑定数据:

<template>
  <view>
    <slot :item="itemData" :index="currentIndex"></slot>
  </view>
</template>
<script>
export default {
  data() {
    return {
      itemData: { name: '示例数据' },
      currentIndex: 1
    }
  }
}
</script>

父组件接收数据:

<child-component>
  <template v-slot="slotProps">
    <text>接收到的数据:{{slotProps.item.name}}</text>
    <text>索引值:{{slotProps.index}}</text>
  </template>
</child-component>

插槽默认内容设置

子组件可以在<slot>标签内设置默认内容,当父组件没有提供插槽内容时显示。

子组件设置默认内容:

<template>
  <view>
    <slot>这是默认显示的内容</slot>
  </view>
</template>

动态插槽名

通过方括号语法使用动态插槽名,实现更灵活的插槽分发。

父组件动态指定插槽:

uniapp 插槽使用

<child-component>
  <template v-slot:[dynamicSlotName]>
    <text>动态插槽内容</text>
  </template>
</child-component>
<script>
export default {
  data() {
    return {
      dynamicSlotName: 'header'
    }
  }
}
</script>

注意事项

使用插槽时组件必须有闭合标签,单标签写法会导致插槽内容无法正常渲染。作用域插槽的数据流动是单向的,父组件不能直接修改子组件传递的数据。在UniApp中,部分小程序平台对插槽的支持存在差异,建议进行兼容性测试。

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

相关文章

uniapp发布到应用商店

uniapp发布到应用商店

发布到苹果App Store 确保开发者账号已注册并加入Apple Developer Program,年费99美元。在Xcode中生成iOS发布证书(.p12)和描述文件(Provisioning…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

uniapp支付功能实现方法 准备工作 注册微信支付、支付宝等平台的开发者账号,获取必要的商户ID(mch_id)、API密钥(key)、应用ID(appid)等信息。确保项目已配置好相关支付SDK。…

uniapp前端页面

uniapp前端页面

Uniapp 前端页面开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端部署(H5、小程序、App等)。以下是开发 Uniapp 前端页面的关键方法和注意事项。…

uniapp中如何引用echarts

uniapp中如何引用echarts

在uniapp中引用echarts uniapp中引用echarts可以通过原生方式或第三方插件实现,以下是具体方法: 使用原生echarts 安装echarts依赖 在项目根目录下执行命令:…

uniapp判断手机定位是否开启

uniapp判断手机定位是否开启

判断手机定位是否开启的方法 在UniApp中判断手机定位是否开启,可以通过调用原生API或使用第三方插件实现。以下是几种常见的方法: 使用uni.getLocation检测定位状态 通过调用uni.…

base64转换方法uniapp

base64转换方法uniapp

Base64 转换方法(UniApp) 在 UniApp 中实现 Base64 编码和解码,可以通过原生 JavaScript 的 btoa 和 atob 方法,或使用第三方库如 base64-js。…