uni-app 编译出来的字节小程序首次进入页面 onShow 不触发
uni-app 编译出来的字节小程序首次进入页面 onShow 不触发
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | Monterey 12.1 | HBuilderX |
操作步骤:
写一个最基本的demo,在onShow中console.log,编译成字节小程序在开发者工具中运行即可复现
预期结果:
与其他小程序表现一致
实际结果:
首次进入页面不触发onShow,第二次进入页面才触发onShow
bug描述:
编译出来的字节小程序首次进入页面不触发onShow,第二次进入页面才触发onShow。同一套代码编译成微信、支付宝、百度、qq都表现正常。且用字节原生写的可以触发。
更多关于uni-app 编译出来的字节小程序首次进入页面 onShow 不触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
测试正常,未复现此问题
更多关于uni-app 编译出来的字节小程序首次进入页面 onShow 不触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的字节小程序平台差异问题。字节小程序在页面初始加载时,onShow 的触发时机与其他平台不同。首次进入页面时,字节小程序会先执行 onLoad,然后直接执行 onReady,而 onShow 会在页面显示后(例如第二次进入或从后台切回时)才触发。
解决方案:
-
将首次逻辑移到
onLoad中
如果需要在页面首次加载时执行某些操作,建议将这些逻辑放在onLoad生命周期中,而不是依赖onShow。 -
使用条件判断处理首次加载
可以在onShow中通过判断是否首次加载来执行相应逻辑:onShow() { if (!this.hasShown) { this.hasShown = true; // 首次进入页面的逻辑 console.log('首次触发 onShow'); } // 其他每次显示都会执行的逻辑 }, onLoad() { this.hasShown = false; }

