代码在附件里
- 发布:2021-04-05 20:07
- 更新:2024-03-12 15:32
- 阅读:2189
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10
HBuilderX类型: 正式
HBuilderX版本号: 3.1.7
手机系统: Android
手机系统版本号: Android 11
手机厂商: 小米
手机机型: 小米9
页面类型: nvue
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
我两三个不同型号小米手机都测试了同样可以复现,
我找了一个同行用纯Nvue写的APP(已上线),启动瞬间快速切换也会出现这种BUG,
复现步骤就是APP启动渲染完成瞬间(1秒内) 两个手指快速频繁点击底部导航tab1 tab2,如果没复现,请多次重启快速点击测试,
复现前提
比如 首页(tabBar1)是nvue文件,要跳转的tabBar2也是nvue文件,这样就会出现这个BUG(我附件里代码就是这个)
比如2:首页是vue文件,其他要跳转的tabBar是nvue文件也会出现这个BUG
但是 如果首页是nvue页面,要跳转的tabBar页面是vue页面,是不会出现这个问题的。
我还录了个视频,这里好像
我两三个不同型号小米手机都测试了同样可以复现,
我找了一个同行用纯Nvue写的APP(已上线),启动瞬间快速切换也会出现这种BUG,
复现步骤就是APP启动渲染完成瞬间(1秒内) 两个手指快速频繁点击底部导航tab1 tab2,如果没复现,请多次重启快速点击测试,
复现前提
比如 首页(tabBar1)是nvue文件,要跳转的tabBar2也是nvue文件,这样就会出现这个BUG(我附件里代码就是这个)
比如2:首页是vue文件,其他要跳转的tabBar是nvue文件也会出现这个BUG
但是 如果首页是nvue页面,要跳转的tabBar页面是vue页面,是不会出现这个问题的。
我还录了个视频,这里好像
预期结果:
正常
正常
实际结果:
单击事件假死,底部tab点击无反应
单击事件假死,底部tab点击无反应
bug描述:
BUG描述:(APP启动后(渲染完毕)瞬间快速来回频繁切换两个tab(1秒内),会假死单击事件变失效)但是启动后超过1秒以上再点就正常了也不会出现。
真机调试模式,只要出现这个问题,tab单击就没反应了,而且IDE报这个错误。
19:44:17.651 [JS Framework] Failed to execute the callback function:
19:44:17.673 TypeError: Cannot read property '__call_hook' of undefined
没点出来可能您手速不够快,多重复启动 多试几次,我手快目前基本每次都能点出来,而且这个问题有时候会很容易出现,客户给我的反馈就是点击后页面不跳转(假死)说明已经不用压力测试就很容易复现了,已经影响到我线上客户体验
附件 BUG_demo.zip是我BUG复现的demo代码, 复现步骤.zip是我录的视频
设置一下 fast启动 再试试 https://ask.dcloud.net.cn/article/36749
-
w***@qq.com (作者)
回复 DCloud_Android_ST: 刚才试了下fast模式 还是可以点死,,,这块请问你们会解决吗? 如果没法解决 我就只能先把页面改成vue页面了,,现在APP着急上线 很急
2021-04-08 17:51
-
w***@qq.com (作者)
回复 DCloud_Android_ST: 请问这个问题可以抽空修复下嘛 虽然不是啥大问题 但对于完美主义者,可能会因为这一个问题去放弃uniapp
2022-04-23 09:43
w***@qq.com (作者)
这里真的很着急挨,,,作为快速开发框架,,用上nvue性能确实提高了,,实在不想因为这一点原因换框架挨,,官方大大能给个方向吗
-
w***@qq.com (作者)
回复 DCloud_Android_ST: 改成fast 我直接用这个demo测试 也一样可以点出来的 和之前没啥区别,,那还是希望你们后续升级下这里把,比如升级成 未初始化完成时候 点击不管用 但是别让他假死,目前情况是点的假死后 不重启是不会恢复的,
2021-04-08 19:19
二七 - 1111
老哥 我也是这个问题 现在解决了吗?
reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property 'call_hook' of undefined
11:04:28.113 [JS Framework] Failed to execute the callback function:
11:04:28.133 TypeError: Cannot read property '__call_hook' of undefined
11:04:28.153 [JS Framework] Failed to execute the callback function:
11:04:28.173 TypeError: Cannot read property 'call_hook' of undefined
11:04:28.193 [JS Framework] Failed to execute the callback function:
11:04:28.213 TypeError: Cannot read property '__call_hook' of undefined
二七 - 1111
我试了一下 好像是将请求的数据或者是$refs还没创建的时候 在 onload里面调用导致的 我在onReady里面调用后快速切换 会有白屏报错 但是不会出现连续的 _call_hook 报错 切换页面也不会出现假死状态
10:58:10.710 TypeError: Cannot read property '__call_hook' of undefined
10:58:10.730 reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property '__call_hook' of undefined
给个规避方案,目前项目中使用的,思路就是用时间换切换性能
- 配置开屏页面手动关闭
- App.vue 中通过 uni.switchTab 顺序加载其余tab,最终切回第一个 tab
- 完后关闭开屏页面
这种方式修改后切换明显流畅,尤其是安卓下
<script>
import Vue from 'vue'
Vue.config.productionTip = false
export default Vue.extend({
mpType: 'app',
async onLaunch() {
setTimeout(() => plus.navigator.closeSplashscreen(), 5000) // 页面加载最多延迟5秒,防止进不去app
console.log('App onLaunch start')
// 预加载某些公共页面
uni.preloadPage({ url: '/pages/popup/index' })
uni.preloadPage({ url: '/pages/cross/index' })
uni.onTabBarMidButtonTap(() => uni.navigateTo({ url: '/pages/cross/index' }))
// 加载某些复杂的tab页面
await uni.switchTab({ url: '/pages/explore/index' })
// 完毕后切换回首页
await uni.switchTab({ url: '/pages/works/index' })
// 关闭开屏页
plus.navigator.closeSplashscreen()
console.log(`App onLaunch: ${Date.now() - start}ms`)
}
})
</script>
最近又出现这个问题了,请问怎么解决啊,能不能不要闹,用户使用的好好的突然就白屏了,开玩笑呢嘛不是!
10:16:00.105 ReferenceError: require is not defined
10:16:02.311 [JS Framework] Failed to execute the callback function:
TypeError: Cannot read property '__call_hook' of undefined
10:16:02.326 reportJSException >>>> exception function:__WEEX_CALL_JAVASCRIPT__, exception:JavaScript execute error!Uncaught TypeError: Cannot read property '__call_hook' of undefined
at (uni-jsframework.js:1:190503)
at (uni-jsframework.js:1:190768)
at ds (uni-jsframework.js:1:124907)
at switchTab (uni-jsframework.js:1:189911)
at (uni-jsframework.js:1:93485)
at W (uni-jsframework.js:1:57122)
at zh.<computed>.Vh.<computed> (uni-jsframework.js:1:281249)
at (uni-jsframework.js:1:288942)
at (uni-jsframework.js:1:129525)
at CallbackManager.consume (uni-jsframework.js:1:1414)
10:16:03.877 [JS Framework] Failed to execute the callback function:
TypeError: Cannot read property '__call_hook' of undefined
Absorbed66c - 码农一枚
还没解决吗
[JS Framework] Failed to execute the callback function:
TypeError: Cannot read property '__call_hook' of undefined
15:27:04.503 reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property '__call_hook' of undefined
at (uni-jsframework.js:1:195501)
at (uni-jsframework.js:1:195766)
at vs (uni-jsframework.js:1:126153)
at switchTab (uni-jsframework.js:1:194909)
at (uni-jsframework.js:1:94701)
at Y (uni-jsframework.js:1:57721)
at av.<computed>.sv.<computed> (uni-jsframework.js:1:286332)
at (uni-jsframework.js:1:294055)
at (uni-jsframework.js:1:130838)
at CallbackManager.consume (uni-jsframework.js:1:1414)