闪烁问题原因:超过两个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
})
}
当有超过两个Tabbar页面时,单纯使用官方的show时设置选中态会导致闪烁问题。解决方法是在app.js中设置globalData来存储选中状态,在custom-tab-bar组件中根据globalData更新选中态,并在每个Tabbar页面中同步globalData的选中状态。
366

被折叠的 条评论
为什么被折叠?



