uni-app nuve 预加载页面tabbar切换不触发onshow
uni-app nuve 预加载页面tabbar切换不触发onshow
| 项目信息 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Mac |
| PC开发环境版本 | macos 15.4 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.2.16 |
| 手机系统 | 全部 |
| 手机厂商 | 华为 |
| 页面类型 | nvue |
| Vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
测试过的手机:
- 小米mix2
- iphone5s
操作步骤:
- nuve tabbar切换不触发onshow
预期结果:
- tabbar切换触发onshow
实际结果:
- tabbar切换 不能触发onshow
bug描述:
- nuve 预加载页面切换不触发onshow. 切换时只触发onhide
更多关于uni-app nuve 预加载页面tabbar切换不触发onshow的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
更多关于uni-app nuve 预加载页面tabbar切换不触发onshow的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 nvue 页面中,由于渲染机制与 vue 页面不同,预加载的页面在 tabbar 切换时确实可能不会触发 onShow 生命周期。这是因为 nvue 页面基于原生渲染,页面实例在预加载后可能处于“保持”状态,而非完全隐藏/显示。
原因分析:
- nvue 页面在首次加载后,如果被预加载,切换 tab 时页面实例可能未被销毁,因此不会重新触发
onShow。 - 原生渲染层对页面生命周期的管理策略与 vue 页面不同,尤其涉及预加载时,
onShow可能仅在初次进入时触发。
解决方案:
-
使用
onTabItemTap监听
在页面中监听onTabItemTap生命周期,该事件在点击 tabbar 时触发,可在此执行原本放在onShow中的逻辑。onTabItemTap(item) { console.log('tab 切换', item) // 执行数据刷新等操作 } -
通过全局事件通信
使用uni.$emit和uni.$on在 tabbar 切换时跨页面通知。- 在 tabbar 页面切换时触发全局事件:
// 在 app.vue 或公共模块监听 tabbar 切换 uni.onTabBarMidButtonTap(() => { uni.$emit('tabChange') }) - 在目标页面监听事件:
uni.$on('tabChange', () => { // 执行刷新逻辑 })
- 在 tabbar 页面切换时触发全局事件:

