小程序中使用自定义tabbar在switchTab后需要点击2次才能触发active样式 uni-app
小程序中使用自定义tabbar在switchTab后需要点击2次才能触发active样式 uni-app
7 回复
你用的这个自定义tabbar 是用的插件吗?还是自己做的组件?能发一个复现项目吗?
更多关于小程序中使用自定义tabbar在switchTab后需要点击2次才能触发active样式 uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html
用的组件库,ant-design-mini
回复 一枚: 你是怎么使用的呢 能发一个复现demo吗?帮你看下
回复 爱豆豆: 发了,麻烦帮忙看下
回复 一枚: 不是uniapp的bug 是组件问题
测试发现应该是ant-tab-bar的current不生效引起的 你可以自己试试 把current改为1 是不会选中 “我的”
然后你两个页面引入的都是这个组件 默认选中的也都是索引为0的tabbar 当你点"我的"页面其实已经跳转了 但是到了新的页面 默认选中并没有改变还是0 所以要再次点击一下 才能选中 “我的” 就造成了需要点击两次这个问题
这并不是uniapp的bug
你可以向这个UI框架官方反馈下这个current不生效的问题
或者换一个tabbar组件就行了
我换了一个插件即可正常切换 你可以参考下
在uni-app小程序中使用自定义tabbar时,遇到switchTab后需要点击2次才能触发active样式的问题,通常是由于页面栈管理和小程序生命周期导致的。以下是解决方案:
- 使用自定义tabbar组件时,确保在onShow生命周期中手动更新选中状态:
onShow() {
if (typeof this.getTabBar === 'function' && this.getTabBar()) {
this.getTabBar().setData({
selected: 0 // 对应tabbar索引
})
}
}
- 在tabbar组件内部,使用
current
变量控制选中状态,而不是依赖页面路由:
data() {
return {
current: 0
}
},
methods: {
switchTab(e) {
const index = e.currentTarget.dataset.index
this.current = index
uni.switchTab({
url: this.list[index].pagePath
})
}
}