当前位置:首页 > uni-app

uniapp插槽加判断

2026-03-05 13:38:04uni-app

在UniApp中使用插槽并添加条件判断

UniApp基于Vue.js,因此插槽(slot)和条件判断(v-if/v-show)的使用方式与Vue一致。以下是在组件中使用插槽并添加条件判断的几种方法:

基础插槽与条件判断

父组件中使用子组件时,通过插槽传递内容并添加条件:

<!-- 子组件 child.vue -->
<template>
  <view>
    <slot name="header"></slot>
    <slot></slot>
    <slot name="footer"></slot>
  </view>
</template>

<!-- 父组件 -->
<child>
  <template v-slot:header v-if="showHeader">
    <view>这是条件显示的头部内容</view>
  </template>

  <view v-if="showDefault">
    这是默认插槽的条件内容
  </view>

  <template #footer>
    <view>这是始终显示的底部内容</view>
  </template>
</child>

作用域插槽与条件判断

子组件向插槽传递数据,父组件根据数据决定显示:

<!-- 子组件 -->
<template>
  <view>
    <slot :user="user" v-if="userLoaded"></slot>
  </view>
</template>

<script>
export default {
  data() {
    return {
      user: { name: '张三' },
      userLoaded: false
    }
  },
  mounted() {
    setTimeout(() => {
      this.userLoaded = true
    }, 1000)
  }
}
</script>

<!-- 父组件 -->
<child>
  <template v-slot:default="slotProps" v-if="slotProps.user">
    <view>用户: {{slotProps.user.name}}</view>
  </template>
</child>

动态插槽名与条件判断

结合动态插槽名和条件判断实现更灵活的控制:

uniapp插槽加判断

<!-- 父组件 -->
<child>
  <template #[dynamicSlotName] v-if="shouldShowSlot">
    <view>动态插槽内容</view>
  </template>
</child>

<script>
export default {
  data() {
    return {
      dynamicSlotName: 'header',
      shouldShowSlot: true
    }
  }
}
</script>

注意事项

  • 作用域插槽的条件判断可以放在父组件或子组件中,根据业务需求选择
  • v-if和v-show的区别:v-if是条件渲染,v-show是条件显示(始终渲染)
  • 动态插槽名需要使用方括号语法(v-slot:[name]或#[name])
  • 在UniApp中所有模板语法都需要写在标签中

通过合理组合插槽和条件判断,可以创建高度可复用和灵活的组件结构。

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

相关文章

uniapp隐藏滚动条

uniapp隐藏滚动条

在UniApp中隐藏滚动条可以通过以下几种方法实现,具体根据使用场景选择: 全局样式设置(APP/H5) 通过修改全局CSS样式隐藏滚动条,适用于所有页面: ::-webkit-scrollbar…

uniapp前端项目

uniapp前端项目

Uniapp 前端项目开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App 等)。以下是关于 Uniapp 前端项目的关键信息: 环…

uniapp get

uniapp get

uniapp 获取数据的方法 在 uniapp 中获取数据可以通过多种方式实现,包括 API 请求、本地存储、页面传参等。以下是一些常见的方法: API 请求获取数据 使用 uni.request…

uniapp $on

uniapp $on

uniapp $on 方法详解 $on 是 UniApp 中用于监听全局事件的 API,常用于跨页面或跨组件通信。它基于 Vue 的事件机制,允许在全局范围内触发和监听自定义事件。 基本语法 uni…

美颜uniapp

美颜uniapp

美颜功能在UniApp中的实现方法 在UniApp中实现美颜功能,可以通过以下几种方式: 使用第三方SDK或插件 腾讯云美颜SDK:提供直播推流场景下的美颜、滤镜、贴纸等功能,支持UniApp集成…

uniapp 自动打包

uniapp 自动打包

uniapp 自动打包方法 uniapp 支持通过命令行或 CI/CD 工具实现自动化打包,适用于 H5、小程序、App 等平台。以下是常见的自动打包方式: H5 或小程序打包 使用 npm ru…