From d2f7b5e1ecdaf083e2b18f65b98cdbdab3882050 Mon Sep 17 00:00:00 2001 From: feige996 <1020102647@qq.com> Date: Sat, 21 Jun 2025 14:13:30 +0800 Subject: [PATCH] =?UTF-8?q?docs(layouts):=20=E6=B7=BB=E5=8A=A0tabbar?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E4=BD=BF=E7=94=A8=E8=AF=B4=E6=98=8E=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layouts/fg-tabbar/fg-tabbar.vue | 31 +++++++++++++++-------------- src/layouts/fg-tabbar/tabbar.md | 16 +++++++++++++++ src/layouts/fg-tabbar/tabbarList.ts | 28 ++++++++++++++------------ src/layouts/tabbar.vue | 2 +- 4 files changed, 48 insertions(+), 29 deletions(-) create mode 100644 src/layouts/fg-tabbar/tabbar.md diff --git a/src/layouts/fg-tabbar/fg-tabbar.vue b/src/layouts/fg-tabbar/fg-tabbar.vue index 757ded0..42fcb03 100644 --- a/src/layouts/fg-tabbar/fg-tabbar.vue +++ b/src/layouts/fg-tabbar/fg-tabbar.vue @@ -1,6 +1,6 @@ diff --git a/src/layouts/fg-tabbar/tabbar.md b/src/layouts/fg-tabbar/tabbar.md new file mode 100644 index 0000000..f350aeb --- /dev/null +++ b/src/layouts/fg-tabbar/tabbar.md @@ -0,0 +1,16 @@ +# tabbar 说明 + +tabbar 分为4种情况: + +- 完全原生tabbar,使用 switchTab 切换 tabbar,tabbar页面有缓存。 + - 优势:原生自带的tabbar,最先渲染,有缓存。 + - 劣势:只能使用2组图片来切换选中和非选中状态,修改颜色只能重新换图片(或者用iconfont)。 +- 半自定义tabbar,使用 switchTab 切换 tabbar,tabbar页面有缓存。使用了第三方UI库的 tabbar 组件,并隐藏了原生 tabbar 的显示。 + - 优势:可以随意配置自己想要的 svg icon,切换字体颜色方便。有缓存。可以实现各种花里胡哨的动效等。 + - 劣势:首次点击tababr会闪烁。 +- 全自定义tabbar,使用 navigateTo 切换tabbar,tabbar页面无缓存。使用了第三方UI库的 tabbar 组件。 + - 优势:可以随意配置自己想要的 svg icon,切换字体颜色方便。可以实现各种花里胡哨的动效等。 + - 劣势:首次点击tababr会闪烁,无缓存。 +- 无tabbar,只有一个页面入口,底部无tabbar显示;常用语临时活动页。 + +> 注意:花里胡哨的效果需要自己实现,本模版不提供。 diff --git a/src/layouts/fg-tabbar/tabbarList.ts b/src/layouts/fg-tabbar/tabbarList.ts index 7fb7113..a36f904 100644 --- a/src/layouts/fg-tabbar/tabbarList.ts +++ b/src/layouts/fg-tabbar/tabbarList.ts @@ -1,8 +1,17 @@ // 是否使用自定义的tabbar? -export const CUSTOM_TABBAR_ENABLE = false +export const TABBAR_STRATEGY = { + 0: 'NATIVE_TABBAR', + 1: 'HALF_CUSTOM_TABBAR', + 2: 'FULL_CUSTOM_TABBAR', + 3: 'NO_TABBAR', +} -// CUSTOM_TABBAR_ENABLE 为 true 时,可以不填 iconPath 和 selectedIconPath -// CUSTOM_TABBAR_ENABLE 为 false 时,可以不填 icon 和 iconType +// TODO:通过这里切换使用tabbar的策略 +export const selectedTabbarStrategy = 0 +export const cacheTabbarEnable = selectedTabbarStrategy < 2 + +// selectedTabbarStrategy==0 时,需要填 iconPath 和 selectedIconPath +// selectedTabbarStrategy==1 or 2 时,需要填 icon 和 iconType export const tabbarList = [ { iconPath: 'static/tabbar/home.png', @@ -34,12 +43,6 @@ export const tabbarList = [ // }, ] -// midButton 仅App和H5支持 -const midButton = { - iconPath: '/static/logo.svg', - text: '发布', -} - const _tabbar = { color: '#999999', selectedColor: '#018d71', @@ -49,9 +52,8 @@ const _tabbar = { fontSize: '10px', iconWidth: '24px', spacing: '3px', - list: tabbarList as any, - // midButton 仅App和H5支持,(h5中测试也没生效) - // midButton: midButton, + list: tabbarList, } -export const tabBar = CUSTOM_TABBAR_ENABLE ? undefined : _tabbar +// 0和1 需要显示底部的tabbar的各种配置,以利用缓存 +export const tabBar = cacheTabbarEnable ? _tabbar : undefined diff --git a/src/layouts/tabbar.vue b/src/layouts/tabbar.vue index 3331975..9ccc2a4 100644 --- a/src/layouts/tabbar.vue +++ b/src/layouts/tabbar.vue @@ -8,7 +8,7 @@