闪烁问题原因:超过两个tabbar页不要单纯的使用官方说的show时getTabBar().setData设置选中态,自定义tabbar是多个实例的,那样只会改变当前tabbar实例的选中态,其他页面的tabbar实例并没有改变选中态。
解决tabbar闪烁问题:
1.在app.js中设置 globalData
// app.js
App({
globalData: {
tabIndex: 0
},
})
2.在 custom-tab-bar/index.js 中设置
//custom-tab-bar/index.js
const app = getApp()
lifetimes: {
attached() {
this.setData({
selected: app.globalData.tabIndex
})
}
},
methods: {
switchTab(e) {
const data = e.currentTarget.dataset
const url = data.path
wx.switchTab({ url })
app.globalData.tabIndex = data.index
}
},
3.每个tabbar页面设置
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
selected: // tabbar的id
})
}