问题描述 :
在手机端,通过点击一个弹窗跳转新页面【客户端方法新开页面】,返回时可以看到弹窗一闪而过。
原因 :
当用变量isShow控制弹窗的显示时。在跳转前虽然已经将isShow设置成了false,但是由于vue更新dom是异步的,所以在执行跳转动作时,当前页面dom并未渲染完成【即弹窗仍处于显示状态】。当由新页面返回时,继续dom渲染的动作,因此出现了弹窗闪现的情况。
解决思路:
等待dom更新完毕后再执行跳转动作
原理查看 https://github.com/zypyezi/question-ocean/issues/6#issuecomment-501572476
this.isShow = false
// 实践不行
this.$nextTick(() => { this.openUrl() } )
// 实践不行
new Promise((resolve) => {
resolve()
}).then(res => {
this.openUrl()
})
// 实践可行
setTimeout( () =>{
this.openUrl()
}, 0 )