当前位置:首页 > 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是一款基于Vue.js的跨平台开发框架,支持一次开发,多端部署。开发者可以通过编写一套代码,发布到iOS、Android、Web以及各种小程序平台(如微信、支付宝、百…

uniapp消息推送

uniapp消息推送

uniapp消息推送实现方法 uniapp支持多种消息推送方式,包括uniPush、个推、极光推送等。以下为常见实现方案: uniPush(官方推荐) uniapp官方提供的推送服务,基于DClou…

uniapp设置背景

uniapp设置背景

设置全局背景样式 在App.vue文件中添加全局样式,使用page选择器设置页面背景。这种方式会影响所有页面背景。 <style> page { background-color:…

uniapp中如何使用iconfont

uniapp中如何使用iconfont

使用 Iconfont 在 Uniapp 中的步骤 下载 Iconfont 资源 访问 Iconfont 官网,选择需要的图标并添加到项目。下载时选择 Font class 格式,解压后会得到 .tt…

react如何实现插槽

react如何实现插槽

React 实现插槽的方法 React 本身没有直接提供类似 Vue 的插槽(slot)概念,但可以通过以下几种方式实现类似功能: 使用 props.children React 组件可以通过 p…

uniapp有用

uniapp有用

Uniapp 的优势 Uniapp 是一款基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布,适用于 iOS、Android、Web、小程序等多个平台。其核心优势包括: 跨平台兼容性…