曾小晨
曾小晨
  • 发布:2023-03-31 16:37
  • 更新:2023-03-31 16:37
  • 阅读:215

【报Bug】subnvue 和 reLaunch 跳转的怪异现象

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.7.8

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: 小米8

页面类型: nvue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:
  1. 在首页添加一个subnvue,样式下:
    {  
    "id": "user-panel",  
    "path": "pages/index/subnvue/user-panel",  
    "type": "popup",  
    "style": {  
    "position": "popup",  
    "width": "100%",  
    "mask": "none",  
    "background": "rgba(0, 0, 0, 0)"  
    }  
    },

    pages/index/subnvue/user-panel.vue

    <view class="user-panel" @click.stop />

    样式:

    <style>  
    .user-panel {  
    position: absolute;  
    top: 0;  
    bottom: 0;  
    left: 0;  
    right: 0;  
    background-image: linear-gradient(to bottom right, #fafafa, #f5f5f5);  
    width: 470rpx;  
    padding: 0 20rpx;  
    border-radius: 0 12rpx 12rpx 0;  
    }  
    </style>
  2. 在首页可以跳转任意界面,再从另外的界面调用uni.reLaunch({ url: '/pages/index/index' }) 方法跳转回来
  3. 在首页打开subnvue
    const popup = uni.getSubNVueById('user-panel')  
    popup.show('slide-in-left', 200);

    第一次打开会出现闪屏,第二次加载了之后就正常了

预期结果:

应该不会闪屏

实际结果:

闪屏

bug描述:

我给首页(pages/index/index)添加了一个subnvue窗口,名叫user-panel
最开始首页加载的时候,该页面的所有的subnvue窗口也会一同加载,uniapp 的机制是这样吧?
但是,我是根据本地是否存在token来判断第一屏应该是首页(pages/index/index)还是登录页(pages/login/login),如果没有token,我等到了登录页才手动把启动屏关掉,此时首页和首页的subnvue们已经加载了。
用户登录成功后,我再通过reLaunch跳转回首页,但是奇怪的是,subnvue已经不再自动加载,只有等到代码调用了show才能够加载。
导致的问题,就会出现闪屏,因为只有等subnvue窗口动画结束之后,页面节点才会渲染...

2023-03-31 16:37 负责人:无 分享
已邀请:

要回复问题请先登录注册