fix(tabbar): 修复图片模式下高亮图标属性名错误并更新文档

将 activeIcon 属性名统一改为 iconActive 以保持一致性
更新 README 文档,补充不同图标类型的配置说明
This commit is contained in:
feige996
2025-08-21 17:55:18 +08:00
parent 96f47f121c
commit ad2554079b
3 changed files with 50 additions and 4 deletions

View File

@@ -31,3 +31,48 @@
- `store.ts` ,专门给 `自定义 tabbar` 提供状态管理,代码几乎不需要修改。
- `index.vue` ,专门给 `自定义 tabbar` 提供渲染逻辑,代码可以稍微修改,以符合自己的需求。
## 自定义tabbar的不同类型的配置
- uniUi 图标
```js
{
// ... 其他配置
"iconType": "uniUi",
"icon": "home",
}
```
- unocss 图标
```js
{
// ... 其他配置
// 注意 unocss 图标需要如下处理:(二选一)
// 1在fg-tabbar.vue页面上引入一下并注释掉见tabbar/index.vue代码第2行
// 2配置到 unocss.config.ts 的 safelist 中
iconType: 'unocss',
icon: 'i-carbon-code',
}
```
- iconfont 图标
```js
{
// ... 其他配置
// 注意 iconfont 图标需要额外加上 'iconfont',如下
iconType: 'iconfont',
icon: 'iconfont icon-my',
}
```
- image 本地图片
```js
{
// ... 其他配置
// 使用 image需要配置 icon + iconActive 2张图片不推荐
// 既然已经用了自定义tabbar了就不建议用图片了所以不推荐
iconType: 'image',
icon: '/static/tabbar/home.png',
iconActive: '/static/tabbar/homeHL.png',
}
```

View File

@@ -20,7 +20,7 @@ export const TABBAR_STRATEGY_MAP = {
// 如果是使用 NO_TABBAR(0)nativeTabbarList 和 customTabbarList 都不生效(里面的配置不用管)
// 如果是使用 NATIVE_TABBAR(1),只需要配置 nativeTabbarListcustomTabbarList 不生效
// 如果是使用 CUSTOM_TABBAR(2,3),只需要配置 customTabbarListnativeTabbarList 不生效
export const selectedTabbarStrategy = TABBAR_STRATEGY_MAP.NATIVE_TABBAR
export const selectedTabbarStrategy = TABBAR_STRATEGY_MAP.CUSTOM_TABBAR_WITH_CACHE
type NativeTabBarItem = TabBar['list'][number]
@@ -51,11 +51,12 @@ export interface CustomTabBarItem {
pagePath: string
iconType: 'uniUi' | 'uiLib' | 'unocss' | 'iconfont' | 'image' // 不建议用 image 模式需要配置2张图
icon: any // 其实是 string 类型,这里是为了避免 ts 报错 (tabbar/index.vue 里面 uni-icons 那行)
activeIcon?: string // 只有在 image 模式下才需要传递的是高亮的图片PS 不建议用 image 模式)
iconActive?: string // 只有在 image 模式下才需要传递的是高亮的图片PS 不建议用 image 模式)
badge?: number | 'dot' // badge 显示一个数字或 小红点(样式可以直接在 tabbar/index.vue 里面修改)
isBulge?: boolean // 是否是中间的鼓包tabbarItem
}
// TODO: 3/3. 使用 CUSTOM_TABBAR(2,3) 时,更新下面的 tabbar 配置
// 如果需要配置鼓包,需要在 'tabbar/store.ts' 里面设置,最后在 `tabbar/index.vue` 里面更改鼓包的图片
export const customTabbarList: CustomTabBarItem[] = [
{
text: '首页',

View File

@@ -57,11 +57,11 @@ function getColorByIndex(index: number) {
}
function getImageByIndex(index: number, item: CustomTabBarItem) {
if (!item.activeIcon) {
if (!item.iconActive) {
console.warn('image 模式下,需要配置 iconActive (高亮时的图片),否则无法切换高亮图片')
return item.icon
}
return tabbarStore.curIdx === index ? item.activeIcon : item.icon
return tabbarStore.curIdx === index ? item.iconActive : item.icon
}
</script>