refactor(tabbar): 将图标类型从'local'重命名为'image'并添加警告

修改图标类型命名以更准确描述其用途
在image模式下未配置iconActive时添加控制台警告
This commit is contained in:
feige996
2025-08-07 20:33:38 +08:00
parent 66bd18c336
commit ccfab5eea4
2 changed files with 9 additions and 5 deletions

View File

@@ -1,9 +1,9 @@
import type { TabBar } from '@uni-helper/vite-plugin-uni-pages'
type FgTabBarItem = TabBar['list'][0] & {
iconType: 'uniUi' | 'uiLib' | 'unocss' | 'iconfont' | 'local'
iconType: 'uniUi' | 'uiLib' | 'unocss' | 'iconfont' | 'image'
icon: any // 其实是 string 类型,这里是为了避免 ts 报错
activeIcon?: string // 只有在 local 模式下才需要传递的是高亮的图片PS 不建议用 local 模式)
activeIcon?: string // 只有在 image 模式下才需要传递的是高亮的图片PS 不建议用 image 模式)
}
/**
@@ -79,7 +79,7 @@ export const tabbarList: FgTabBarItem[] = [
// text: '首页',
// // 使用 local需要配置 icon + iconActive 2张图片不推荐
// // 既然已经用了自定义tabbar了就不建议用图片了所以不推荐
// iconType: 'local',
// iconType: 'image',
// icon: '/static/tabbar/home.png',
// iconActive: '/static/tabbar/homeHL.png',
// },

View File

@@ -44,7 +44,11 @@ function getColorByIndex(index: number) {
return tabbarStore.curIdx === index ? activeColor : inactiveColor
}
function getImageByIndex(index: number, item: { iconActive: string, icon: string }) {
function getImageByIndex(index: number, item: { iconActive?: string, icon: string }) {
if (!item.iconActive) {
console.warn('image 模式下,需要配置 iconActive否则无法切换图片')
return item.icon
}
return tabbarStore.curIdx === index ? item.iconActive : item.icon
}
</script>
@@ -72,7 +76,7 @@ function getImageByIndex(index: number, item: { iconActive: string, icon: string
<template v-if="item.iconType === 'unocss' || item.iconType === 'iconfont'">
<view :class="item.icon" class="text-20px" />
</template>
<template v-if="item.iconType === 'local'">
<template v-if="item.iconType === 'image'">
<image :src="getImageByIndex(index, item)" mode="scaleToFill" class="h-20px w-20px" />
</template>
<view class="mt-2px text-12px">