当前位置:首页 > uni-app

uniapp插槽加判断

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

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

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

uniapp插槽加判断

基础插槽与条件判断

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

uniapp插槽加判断

<!-- 子组件 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>

动态插槽名与条件判断

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

<!-- 父组件 -->
<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简介 丸子UniApp是一个基于UniApp框架开发的移动应用解决方案,通常用于快速构建跨平台应用(如微信小程序、H5、Android/iOS等)。其核心特点是利用UniApp的“一次…

重构uniapp

重构uniapp

重构 Uniapp 项目的关键方法 代码结构优化 将页面、组件、静态资源按功能模块划分,避免全部堆放在根目录。建议采用以下结构: src/ ├── components/ // 通用组件…

uniapp $on

uniapp $on

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

uniapp广播

uniapp广播

全局事件通信 在UniApp中实现广播功能可通过全局事件机制完成,适用于跨页面或组件通信。使用uni.$emit、uni.$on、uni.$off等方法实现事件的触发、监听与移除。 发送广播(触发事…

uniapp 3.0

uniapp 3.0

uniapp 3.0 核心特性 uniapp 3.0 是 DCloud 推出的跨端开发框架升级版本,支持一套代码编译到 iOS、Android、Web 及各类小程序平台。以下为关键特性与使用要点:…

uniapp 气泡

uniapp 气泡

uniapp 气泡实现方法 在 uniapp 中实现气泡效果可以通过多种方式,以下是常见的几种方法: 使用 CSS 样式实现气泡 通过 CSS 的 border 和 ::after 伪元素可以创建气…