Files
2026-03-11 11:15:33 +08:00

50 lines
1.3 KiB
JavaScript

/**
* TabBar Mixin
* 用于在页面中自动显示/隐藏自定义 tabbar
*/
import { getVisibleTabBar, getCurrentTabIndex } from '@/common/tabbar.js'
export default {
data() {
return {
showTabBar: false,
tabBarCurrent: 0
}
},
onLoad() {
this.checkShowTabBar()
},
onShow() {
this.checkShowTabBar()
this.updateTabBarCurrent()
},
methods: {
checkShowTabBar() {
// 获取当前页面路径
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
const currentPath = currentPage.route || currentPage.$route?.path || ''
// 获取可见的 tabbar 列表
const visibleTabs = getVisibleTabBar()
// 检查当前页面是否在 tabbar 列表中
const path = currentPath.startsWith('/') ? currentPath.slice(1) : currentPath
const isTabBarPage = visibleTabs.some(item => {
const itemPath = item.pagePath.startsWith('/') ? item.pagePath.slice(1) : item.pagePath
return itemPath === path
})
this.showTabBar = isTabBarPage
},
updateTabBarCurrent() {
if (this.showTabBar) {
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
const currentPath = currentPage.route || currentPage.$route?.path || ''
this.tabBarCurrent = getCurrentTabIndex(currentPath)
}
}
}
}