if(plus.os.name.toLowerCase() == "android"){
const navigateTo = uni.navigateTo;
uni.navigateTo = function(params){
uni.preloadPage({
url:params.url,
complete:()=>{
setTimeout(function(){
navigateTo(params)
},100)
}
})
}
}
- 发布:2020-06-20 16:18
- 更新:2021-07-16 11:22
- 阅读:1092
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 10.14.6
HBuilderX类型: 正式
HBuilderX版本号: 2.7.14
手机系统: Android
手机系统版本号: Android 8.0
手机厂商: 华为
手机机型: note8
页面类型: nvue
打包方式: 离线
项目创建方式: HBuilderX
操作步骤:
预期结果:
正常出现返回键
正常出现返回键
实际结果:
二级页面有时没有返回键也就是说 getCurrentPages length 为 1 【实际应该为2】
二级页面有时没有返回键也就是说 getCurrentPages length 为 1 【实际应该为2】
bug描述:
使用preloadPage后getCurrentPages异常【数量不对】导致uni-nav-bar【isHome 判断失败】二级页面返回键不出来
杨大宝 (作者)
应该是和setTimeout有关系,不太明白什么原因,去掉就好了
2020-06-23 16:45
杨大宝 (作者)
但是去掉之后就没有预加载的意义了,提前写好其实不太现实,全局几乎都是nvue的页面,全部加起来200-300个页面,应该是载入时先渲染完成后在执行入栈动画
2020-06-23 16:47
DCloud_UNI_FXY
回复 杨大宝: 你这个需求不适合用preloadPage来实现,每个页面先preload,再navigate,很容易出问题,先完成渲染,再动画,会感觉很迟钝吧,点击跳转之后,隔了半天才有动画
2020-06-23 17:06
杨大宝 (作者)
回复 DCloud_UNI_FXY: 我试了,如果没有上面的问题的话,延迟个100ms已经很明显了,绝大部分都能加载完成,入栈时就不会有个大白屏了,而且一般点击后200ms内响应用户来说其实没太大直观感受,反而这个大白屏和渲染过程会很直观的降低体验,其实nvue渲染也是挺快的,只不过是单点渲染的,加载时出现大白屛,然后一个一个节点的渲染,主要是视觉体验太差,如果咱们可以把append这个属性搞一下再配合预加载或者【延迟入栈】(预加载解决大白屏,append=tree解决动态渲染时的体验)那么我觉得uniapp+nvue绝对可以稳稳站在同行顶端了,虽说我们可以先忍忍,但不管怎么说目前的nvue表现确实差强人意,对APP需求(要求性能、APP体量大)的团队来说是一大痛点。
2020-06-23 17:24
DCloud_UNI_FXY
回复 杨大宝: 简单处理的话,是不是navigateTo提供一个延迟动画的时间参数就行了
2020-06-23 17:55
杨大宝 (作者)
回复 DCloud_UNI_FXY: 是的
2020-06-23 18:20
杨大宝 (作者)
回复 DCloud_UNI_FXY: 请问这个简单处理的方法啥时候可以出来哟~
2020-07-27 16:48
杨大宝 (作者)
回复 DCloud_UNI_FXY: 你好,行不行的回个话嘛,你们要是觉得这个不重要也要给个回复呀,我等的好辛苦啊。
2020-08-24 16:58
杨大宝 (作者)
回复 DCloud_UNI_FXY: 这个还能实现不
2020-11-17 15:54