uniapp底部菜单栏出现在了登录页该怎么办

在uniapp开发中,底部菜单栏出现在了登录页面,导致登录页和菜单栏重叠显示。按照设计本应只在主页显示底部菜单,请问该如何解决这个问题?可能是路由配置或页面生命周期的问题,求解决方法。

2 回复

在登录页隐藏底部菜单栏。在 pages.json 中,为登录页配置 "tabBar": false 即可。


在 UniApp 中,如果底部菜单栏(tabBar)意外出现在登录页,通常是因为页面路由配置问题。登录页不应属于 tabBar 页面,需检查并调整配置。以下是解决方案:

1. 检查 pages.json 配置

  • pages.jsontabBar 部分,list 数组应只包含需要显示底部栏的页面。
  • 确保登录页 不在 list 中,且登录页的路径未错误添加到 tabBar。

示例正确配置:

{
  "tabBar": {
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页"
      },
      {
        "pagePath": "pages/user/user",
        "text": "我的"
      }
      // 登录页(如 pages/login/login)不应出现在此处
    ]
  },
  "pages": [
    {
      "path": "pages/login/login",
      "style": {}
    },
    {
      "path": "pages/index/index",
      "style": {}
    }
  ]
}

2. 登录页使用 uni.redirectTo 跳转

  • 从登录页跳转到主页时,使用 uni.redirectTo 关闭登录页,避免返回时底部栏残留。
  • 示例代码(在登录成功后的逻辑中):
    uni.redirectTo({
      url: '/pages/index/index'
    });
    

3. 检查页面路由顺序

  • 确保登录页是首个页面(如启动页),或在需要时通过条件判断跳转。

4. 隐藏底部栏(临时方案)

  • 如果仍需在登录页临时隐藏,可在页面样式或全局样式中添加:
    /* 在登录页的 style 中 */
    page {
      padding-bottom: 0 !important;
    }
    .uni-tabbar {
      display: none !important;
    }
    
  • 但此方法不推荐,优先修正路由配置。

总结

根本原因是登录页被错误包含在 tabBar 配置中。检查 pages.json,确保登录页路径不在 tabBar.list 内,并正确使用页面跳转方法。无需额外代码,修正配置即可解决。

回到顶部