微信小程序使用vant4 weapp自定义菜单 但是弹出层却被菜单遮挡的解决办法

最终方案:通过 getTabBar() 直接控制自定义组件显隐

核心思路:wx.hideTabBar() 对自定义 tabBar 不生效,改用 this.getTabBar() 拿到组件实例,直接改其 data,再由 wx:if 驱动显隐。


涉及 3 个文件、共 4 处改动:

custom-tab-bar/index.js --- 第 5 行、第 18-19 行

javascript

复制代码
data: {
  visible: true,   // ← 新增:显隐开关
  // ...
},

pageLifetimes: {
  show() {
    this.setData({ visible: true })  // ← 新增:每次进页面自动恢复
    // ...
  }
}

custom-tab-bar/index.wxml --- 第 1 行

xml

复制代码
<!-- 原来 -->
<view class="tab-bar" wx:if="{{userType}}">

<!-- 改为 -->
<view class="tab-bar" wx:if="{{userType && visible}}">

guarantee-mission.js --- 第 117-120 行、第 143-148 行

javascript

复制代码
// 打开弹窗 → 隐藏菜单
onShowGuaranteeMissionDetail(e) {
  // ...
  const tabBar = this.getTabBar()
  if (tabBar) {
    tabBar.setData({ visible: false })  // 菜单消失
  }
  this.setData({ showGuaranteeMissionDetail: true })  // 弹出弹窗
}

// 关闭弹窗 → 恢复菜单
onCloseGuaranteeMissionDetail() {
  const tabBar = this.getTabBar()
  if (tabBar) {
    tabBar.setData({ visible: true })   // 菜单恢复
  }
  this.setData({ showGuaranteeMissionDetail: false })
}

执行效果

code

复制代码
点击卡片 → getTabBar() 获取组件 → setData({visible: false})
         → wx:if 条件变 false → 底部菜单从 DOM 移除
         → 弹窗弹出

关闭弹窗 → getTabBar() → setData({visible: true})
         → wx:if 条件变 true → 底部菜单恢复

这就是最终生效的方案。


进一步改进:使用监听的方式,不用一个个写:

核心原理就是 observers 数据监听:当任意一个 showXxxPopup 从 false 变为 true 时,observer 自动触发,将 tabBar 设为 hidden;当所有弹窗都恢复 false 时,tabBar 自动恢复。

两种实现:

页面 方式

任务页 独立 behavior tab-bar-control.js,监听 30+ 个弹窗字段

首页 直接在 Page 的 observers 里监听 showDetailPopup, showPunchModal

这样做的好处:

各 behavior 不再需要手动写 getTabBar().setData({ visible: ... }) --- 已全部删除

以后新增弹窗,只需在 observer 的字段列表里加一个名字即可

相关推荐
m0_462803881 天前
【无标题】
微信小程序
小码哥0682 天前
从三甲综合医院到连锁诊所:医院管理小程序的场景化突围逻辑(陪诊系统-陪诊APP-陪诊小程序)
小程序·医院管理系统·陪诊小程序·陪诊系统·陪诊app
2501_916007472 天前
iOS和macOS应用程序性能分析和优化工具使用综合指南
android·macos·ios·小程序·uni-app·iphone·webview
正在走向自律2 天前
用豆包Seed Evolving打造全功能【AI智能记账】小程序,开源可落地
人工智能·小程序·开源·智能记账
小羊Yveesss2 天前
模板建站哪个平台好?模板数量之外还要比较编辑与SEO能力
大数据·人工智能·小程序
2501_916007472 天前
深入理解HTTPS对称与非对称加密机制及Charles抓包实践
网络协议·http·ios·小程序·https·uni-app·iphone
郑州光合科技余经理2 天前
家政O2O平台解析:从0搭建上门预约小程序解决方案
android·java·开发语言·前端·小程序·架构·php
维双云3 天前
小程序商城制作一个需要多少钱?2026报价明细与成本拆解
小程序
郑州光合科技余经理3 天前
家政预约小程序后端源码深度剖析:支付回调实战
java·开发语言·前端·git·小程序·架构·php
电商API_180079052473 天前
导购比价小程序场景|京东联盟商品详情对接方案|多规格图文拉取技术实操
网络·小程序·网络爬虫