Vue+vant 直播间 - 在离开直播间时弹出确认框

本文介绍了在Vue应用中使用beforeRouteLeave生命周期钩子函数来实现页面离开时的确认弹窗。当用户尝试离开页面时,会触发该钩子,通过Dialog组件显示确认提示。问题在于只有首次进入时弹窗正常显示,之后只会显示蒙罩层。为了解决这个问题,作者采用了setTimeout延时处理,但未深入解释其原因。最终,通过设置延迟时间,成功解决了弹窗只显示一次的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现:

由于页面导航自带返回按钮,利用Vue周期钩子函数 beforeRouteLeave (to, from, next) {}

beforeRouteLeave 的三个参数分别是
1、to:要去的页面
2、from: 本页面地址
3:next 下一步

next(false)代表不进行操作。

问题:

只有第一次进入页面时,弹框才会弹出来,再次进入页面只出现蒙罩层,且只是一闪而过。

解决:

加一个计时器 setTimeout(()=>{}),网上搜罗来的,目前还不知为什么,知道了会补充。

	beforeRouteLeave (to, from, next) {
       //  1 操作来自关闭按钮(按钮点击flag)
   		console.log("我退出了")
		setTimeout(() => {
			Dialog.confirm({
					title: '确认',
					message: '确认离开直播间?',
				})
				.then(() => {
					console.log(from.path ,from)
					if(from.path === '/startLive'){
						next();
						this.quitGroup()
						console.log("确认")
					}
				})
				.catch(() => {
					// on cancel
				console.log("取消")

					next(false)
				});
				},200)
		},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值