tdesign-miniprogram
tdesign-miniprogram copied to clipboard
[Dialog] 偶发现出现弹窗无法关闭的情况
tdesign-miniprogram 版本
1.1.8
重现链接
No response
重现步骤
通过命令的方式调用 Dialog 组件,在确定按钮中执行以下两个操作 1、关闭弹窗 2、画面跳转
代码如下所示
const checkdialog = {
content:
'您在当前运营区域内没有购买该电池型号的换电套餐,请购买套餐后再继续操作',
confirmBtn: {
content: '购买套餐',
bindtap({}) {
Dialog.close();
wx.navigateTo({
url: '/pages/product/product-choose/index',
});
},
},
cancelBtn: '取消',
};
Dialog.confirm(checkdialog);
期望结果
弹窗能够正常关闭,画面能够跳转。
实际结果
偶发性会出现弹窗不能关闭的现象(即,画面正常跳转,但返回的时候,画面上的弹窗还显示在画面上,且无法关闭) 手机性能越低,触发的情况越多;手机性能高时,相对来说没有问题。
但如果代码做如下修改,就可以正常使用。
const checkdialog = {
content:
'您在当前运营区域内没有购买该电池型号的换电套餐,请购买套餐后再继续操作',
confirmBtn: {
content: '购买套餐',
bindtap({}) {
Dialog.close();
setTimeout(()=>{
wx.navigateTo({
url: '/pages/product/product-choose/index',
});
}, 300)
},
},
cancelBtn: '取消',
};
Dialog.confirm(checkdialog);
基础库版本
No response
补充说明
加上setTimeout之后,能够正常运行,其实就是为了保证在画面跳转之前,弹窗关闭的方法能够正常执行。
有没有什么办法,可以优化一下Dialog.close()。让他能够快点执行,或者,再起基础上加个回调啥的,可以把后续的内容写在它的成功回调里面。
👋 @Zlianxin,感谢给 TDesign 提出了 issue。 请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。
♥️ 有劳 @jin0209 @mcc108 尽快确认问题。 确认有效后将下一步计划和可能需要的时间回复给 @Zlianxin 。
wx.navigateTo新开启了一个webview,在部份机型或者低版本小程序可能导致Dialog.close()并未执行完,建议在navigateTo的complete回调函数执行 Dialog.close();
const checkdialog = {
content:
'您在当前运营区域内没有购买该电池型号的换电套餐,请购买套餐后再继续操作',
confirmBtn: {
content: '购买套餐',
bindtap({}) {
wx.navigateTo({
url: '/pages/product/product-choose/index',
complete: () => {
Dialog.close();
},
});
},
},
cancelBtn: '取消',
};
Dialog.confirm(checkdialog);