使用示例代码
- 发布:2022-12-09 18:00
- 更新:2024-06-21 15:13
- 阅读:972
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 12.6
HBuilderX类型: 正式
HBuilderX版本号: 3.6.5
手机系统: Android
手机系统版本号: Android 10
手机厂商: 小米
手机机型: mix4
页面类型: nvue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
return false 不跳转也不改变选中状态
return false 不跳转也不改变选中状态
实际结果:
return false 不跳转,改变了选中状态
return false 不跳转,改变了选中状态
bug描述:
uni.addInterceptor('switchTab', {
invoke(e) {
return false
}
})
return false 之后虽然没有跳转,但选中状态会改变
6 个回复
2***@qq.com
安卓可以这样试试:interceptBack() {
const tabPages = ['/pages/card/card', '/pages/me/me', '/pages/wallet/wallet', '/pages/transaction/transaction'];
uni.addInterceptor('navigateBack', {
invoke: (e) => {
// 1 获取页面栈
const pages = getCurrentPages();
const len = pages?.length;
// 2 判断长度
if (len !== 2) return true;
// // 3 判断最后一个页面是否为登录页面
if (pages[1].$page.fullPath != '/pages/login/login') return true;
// // 4 兼容跳转至上个 tab 页面,APP端需要兼容 tabbar 的活跃图标异常
const routeName = pages[0].$page.fullPath;
// // 5 判断是否为 tabbar 页面
if (!tabPages.includes(routeName)) return true;
// // 6 跳转回原 tab 页
uni.switchTab({
url: routeName
});
return true;
}
});
}
9***@qq.com
我也遇到这个问题,按照作者提供的“暂时的处理是 再重新调用一次switchTab 切回之前的tabbarItem”实现了一遍,确实可以临时解决这个问题.
后来同事提出另一个思路,假设TabA切换TabB,TabB做了拦截(其实是没有进入到TabB的),返回TabA的时候,在TabA执行
uni.switchTab({
url:'TabA URL'
})
简单来说就是自己switchTab自己
本来我以为会陷入页面无限死循环,结果发现并没有哎,
这样就解决了?虽然我知道这样做存在风险,但是是目前最简单的解决方式.
呆狗的一生 - 呆狗的一生
确实是这样
1***@qq.com
有解吗?
yyyttt (作者)
暂时的处理是 再重新调用一次switchTab 切回之前的tabbarItem
2023-04-03 11:09
1***@qq.com
回复 yyyttt: 我是直接调用switchTab 返回主页面,页面也不会跳转。效果也是停留在原来页面。不过暂时也就这样子了。
2023-04-20 11:30
翻滚吧牛欢喜
也遇到同样问题,都2023年了还没解决这个问题么
BigHornet
同样遇到这个问题,请问有什么好的解决方案吗