uni-app 预览图片时发生跳转事件页面被预览主图视图遮挡 详细请看demo

uni-app 预览图片时发生跳转事件页面被预览主图视图遮挡 详细请看demo

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 macOS Big Sur 11.1
HBuilderX类型 正式
HBuilderX版本号 3.1.18
手机系统 iOS
手机系统版本号 IOS 14
手机厂商 苹果
手机机型 iphoneX
页面类型 nvue
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

运行到app,点击预览图片,等待3s跳转到另外一个页面看效果

预期结果:

关闭预览图片界面或者层级比预览图片界面要高

实际结果:

预览图片无法关闭,并且层级最高

bug描述:

首页可以预览图片,当点击预览图片,期间如果发生跳转事件,这个预览图片不会消失,并且会挡住新的页面

bug演示1.zip


更多关于uni-app 预览图片时发生跳转事件页面被预览主图视图遮挡 详细请看demo的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

可以通过业务逻辑避免吧

更多关于uni-app 预览图片时发生跳转事件页面被预览主图视图遮挡 详细请看demo的实战教程也可以访问 https://www.itying.com/category-93-b0.html


不可以,因为你们并没有提供关闭预览图片的api,我的场景是用户通过浏览器打开app跳到指定页面,如果此时他正在预览图片,打开app后,显示的还是他在预览图片

h5就没有这个问题,我觉得这应该算一个bug 或者你们可以暴露出主动关闭预览图片的api出来也行,我可以自行判断来关闭,否则这问题没法解决

这是一个常见的预览图片与页面路由的层级冲突问题。在uni-app中,uni.previewImage接口创建的图片预览视图属于原生组件,默认层级最高,且不会随页面跳转自动关闭。

解决方案:

  1. 在跳转前关闭预览:确保在执行页面跳转前调用uni.hideToast()或通过其他方式关闭预览。
// 在跳转前主动关闭预览
uni.hideToast()
uni.navigateTo({
    url: '/pages/targetPage'
})
  1. 使用条件渲染控制预览:通过变量控制预览的显示状态,在跳转时重置状态。
data() {
    return {
        showPreview: false
    }
},
methods: {
    previewImage() {
        this.showPreview = true
        uni.previewImage({
            urls: ['image_url'],
            success: () => {
                this.showPreview = false
            }
        })
    },
    jumpToPage() {
        this.showPreview = false
        uni.navigateTo({
            url: '/pages/targetPage'
        })
    }
}
  1. 监听页面生命周期:在页面的onHideonUnload生命周期中关闭预览。
onHide() {
    uni.hideToast()
}
回到顶部