uni-app uniappx DialogPage 有时候关闭不掉

uni-app uniappx DialogPage 有时候关闭不掉

操作步骤:

  • 由于代码 涉及项目内容,所以确实不太方便发出来,麻烦官方排查下

预期结果:

  • 完整关闭这个窗口

实际结果:

  • 无法完全销毁窗口

bug描述:

通过 uni.openDialogPage({ url: ‘/pages/wode/login’ }) 打开一个窗口后,一切正常

然后 关闭的时候

console.log("进入关闭")
uni.closeDialogPage({
fail: (e: CloseDialogPageFail)=>{
console.log('关闭失败',e.errMsg)
}
});

没有错误输出,也就是这个api 是成功关闭了窗口的,但是 ,实际这个页面没被销毁掉,因为当前页面下面,所有元素都无法点击了,就像上面盖了个东西,

偶发性出现,并不是所有时候都出现 进入关闭 这句话正常输出了,代表 closeDialogPage 被调用了,但是还是关闭不掉

开发环境 版本号 项目创建方式
Mac 15 HBuilderX
iOS iOS 19
vue3

更多关于uni-app uniappx DialogPage 有时候关闭不掉的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

补充另一个bug
‌error: uni-app-x-framework.js(25:118172) Error:返回值为:undefined;请求参数为:{“moduleName”:“UTS-Storage”,“moduleType”:“built-in”,“package”:"",“class”:“UTSSDKModulesDCloudUniStorageIndexSwift”,“name”:“s_setStorageByJs”,“type”:“method”,“method”:[{“name”:“options”,“type”:“UTSSDKModulesDCloudUniStorageSetStorageOptionsJSONObject”}],“nested”:false,“keepAlive”:false,“params”:[{“key”:“userlogins”,“data”:{“phone”:“59901552”,“pass”:“xywfQ1lqNC4Qc-fY2K2sHm4BF13qm77GqHPElOU7oBc=”}}]} ty@uni-app-x-framework.js:25:118172‌ 19:30:36.663 at sdk/store.uts:37:8 19:30:36.663 35 | store.Login = true; 19:30:36.663 36 | if (loginvalue != null) { 19:30:36.663 37 | uni.setStorage({ 19:30:36.663 | ^^^^^^^^^^^^^^^^ 19:30:36.663 38 | key: ‘userlogins’, 19:30:36.663 39 | data: loginvalue
调用 uni.setStorage({ key: ‘userlogins’, data: loginvalue }) 时候 会报错这个,偶发性,是在app 刚启动完,调用报错出现,loginvalue 绝对没空,完整代码为:
if (loginvalue != null) { uni.setStorage({ key: ‘userlogins’, data: loginvalue }) }
uniappx iOS

更多关于uni-app uniappx DialogPage 有时候关闭不掉的实战教程也可以访问 https://www.itying.com/category-93-b0.html


需要延时

我是执行完 页面的操作后才关闭的,不是打开立马关闭

分类调整为 uniapp x。并提供复现工程,也可以在 HBuilderX 中提一个 bug, x 的问题会高优解决

好,setStorage 的我提交了,然后 openDialogPage的我也 复现不出来,偶发性,可能调试一天出现个一两次吧

这是一个已知的偶发性问题,通常与页面生命周期和异步操作时序有关。根据你的描述,closeDialogPage API调用成功但页面未完全销毁,导致UI层被遮挡。

可能的原因和解决方案:

  1. 页面生命周期冲突

    • 检查DialogPage中是否存在异步操作(如网络请求、定时器)未正确清理
    • 确保在onUnloadbeforeDestroy生命周期中清理所有资源
  2. 状态管理问题

    • 确认DialogPage关闭时相关状态已重置
    • 避免在关闭过程中有状态更新触发重新渲染
  3. 时序问题

    // 尝试添加延迟关闭
    setTimeout(() => {
      uni.closeDialogPage()
    }, 50)
回到顶部