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
补充另一个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层被遮挡。
可能的原因和解决方案:
-
页面生命周期冲突
- 检查DialogPage中是否存在异步操作(如网络请求、定时器)未正确清理
- 确保在
onUnload或beforeDestroy生命周期中清理所有资源
-
状态管理问题
- 确认DialogPage关闭时相关状态已重置
- 避免在关闭过程中有状态更新触发重新渲染
-
时序问题
// 尝试添加延迟关闭 setTimeout(() => { uni.closeDialogPage() }, 50)

