refactor(common,components): 优化底部导航栏显隐逻辑

1. 新增isCurrentPageTabBarRoot工具方法封装页面判断逻辑
2. 调整弹窗打开时的导航栏隐藏时机,仅在非TabBar根页面执行
3. 移除弹窗open回调中的导航栏显示逻辑,改为在关闭弹窗时显式处理
4. 补充注释说明回调不可靠的问题和根页面不隐藏导航的原因
This commit is contained in:
2026-07-10 15:46:48 +08:00
parent d9c6e41ebe
commit 013eef46fb
3 changed files with 37 additions and 8 deletions

View File

@@ -584,6 +584,25 @@ export const isTabBarRootPage = (pagePath, tabBarList) => {
});
};
/**
* 判断**当前**页面是否是 TabBar 根页面
* 封装了 getCurrentPages() + isTabBarRootPage 的组合,供业务组件在弹窗/操作前判断
* 例: 登录弹窗在会员中心页打开时,应当跳过 hideTabBar 的调用
* @returns {boolean} 当前页是 TabBar 项时返回 true,否则 false(getCurrentPages 不可用时也返回 false)
*/
export const isCurrentPageTabBarRoot = () => {
try {
const pages = typeof getCurrentPages === 'function' ? getCurrentPages() : []
if (!pages || !pages.length) return false
const currentRoute = '/' + String(pages[pages.length - 1].route || '').replace(/^\//, '')
if (!currentRoute) return false
const tabBarList = store && store.state ? store.state.tabBarList : null
return isTabBarRootPage(currentRoute, tabBarList)
} catch (e) {
return false
}
};
/**
* 检查tabBar是否激活
* @param {string} linkUrl 链接路径 /pages/goods/category
@@ -671,6 +690,9 @@ export default {
/** 判断给定路径是否是 TabBar 根页面(用于动态控制返回按钮显示) */
isTabBarRootPage,
/** 判断当前页面是否是 TabBar 根页面(供业务组件在弹窗前判断是否需要隐藏 TabBar) */
isCurrentPageTabBarRoot,
/**
* 页面跳转
* @param {string} to 跳转链接 /pages/idnex/index