自定義tabBar
自定義tabBar可以讓開發者更加靈活地設定tabBar樣式,以滿足更多個性化的場景。
在自定義tabBar模式下
為了保證低版本相容以及區分哪些頁面是tab頁,tabBar的相關配置項需完整聲明,但這些欄位不會作用於自定義tabBar的渲染。
此時需要開發者提供一個自定義組件來渲染tabBar,所有tabBar的樣式都由該自定義組件渲染,推薦用fixed在底部的 cover-view + cover-image組件渲染樣式,以保證tabBar層級相對較高。
與tabBar樣式相關的接口,如 wx.setTabBarItem 等將失效。
每個tab頁下的自定義tabBar組件實例是不同的,可通過自定義組件下的getTabBar接口,獲取當前頁面的自定義tabBar組件實例
TIP
如需實現tab選中態,要在當前頁面下,通過getTabBar接口獲取組件實例,並調用setData更新選中態,可參攷底部的代碼示例。
使用流程
配置資訊
- 在app.json中的tabBar項指定custom欄位,同時其餘tabBar相關配置也補充完整
- 所有tab頁的json裏需聲明usingComponents項,也可以在app.json全域開啟。
代碼示例:
js
{
"tabBar": {
"custom": true,
"color": "#000000",
"selectedColor": "#000000",
"backgroundColor": "#000000",
"list": [{
"pagePath": "page/component/index",
"text": "Component"
}, {
"pagePath": "page/API/index",
"text": "API"
}]
},
"usingComponents": {}
}添加tabBar代碼文件
在代碼根目錄下添加入口文件:
js
custom-tab-bar/index.js
custom-tab-bar/index.json
custom-tab-bar/index.wxml
custom-tab-bar/index.wxss編寫tabBar代碼
用自定義組件的管道編寫即可,該自定義組件完全接管tabBar的渲染,另外,自定義組件新增getTabBar接口,可獲取當前頁面下的自定義tabBar組件實例。
js
Component({
pageLifetimes: {
show() {
if (typeof this.getTabBar === 'function' &&
this.getTabBar()) {
this.getTabBar().setData({
selected: 0
})
}
}
}
})