杨大宝
杨大宝
  • 发布:2020-06-20 16:18
  • 更新:2021-07-16 11:22
  • 阅读:1092

【报Bug】使用preloadPage后getCurrentPages异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 10.14.6

HBuilderX类型: 正式

HBuilderX版本号: 2.7.14

手机系统: Android

手机系统版本号: Android 8.0

手机厂商: 华为

手机机型: note8

页面类型: nvue

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:
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)  
                }  
            })  
        }  
    }  

预期结果:

正常出现返回键

实际结果:

二级页面有时没有返回键也就是说 getCurrentPages length 为 1 【实际应该为2】

bug描述:

使用preloadPage后getCurrentPages异常【数量不对】导致uni-nav-bar【isHome 判断失败】二级页面返回键不出来

2020-06-20 16:18 负责人:DCloud_UNI_FXY 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

发测试工程

  • 杨大宝 (作者)

    应该是和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

o***@sina.cn

o***@sina.cn

@DCloud_UNI_FXY nvue 这个页面加载问题确实比较严重, 现在2021年7月份了 看来目前还是没有解决, 另外uni.preloadPage(OBJECT) 使用预加载 complete 这个回调 文档写的是 预加载成功完成回调 实际上回调时候还没有预加载完成, 所以需要加延时跳转 期望能尽快解决

该问题目前已经被锁定, 无法添加新回复