手机端 点击弹窗跳转新页面【客户端方法新开页面】,返回时弹窗闪现

问题描述 :
在手机端,通过点击一个弹窗跳转新页面【客户端方法新开页面】,返回时可以看到弹窗一闪而过。

原因 :
当用变量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 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uni-app中,如果你想要实现自定义TabBar点击Tab跳转页面,而是显示一个弹窗,你可以通过监听TabBar上的点击事件,然后使用uni-app提供的API显示一个弹窗(比如使用`uni.showModal`方法)。具体步骤如下: 1. 在页面的`<template>`中定义你的自定义TabBar,并为每个Tab设置点击事件监听器。 2. 在对应的`<script>`脚本中,编写点击事件处理函数,该函数将阻止默认的页面跳转行为,并触发弹窗的显示。 3. 使用`uni.showModal`或其他弹窗组件(如`Dialog`)来实现弹窗的显示。 示例代码如下: ```vue <template> <view> <!-- 自定义TabBar --> <view class="tabbar"> <view class="tab-item" @click="handleTabClick('home')">首页</view> <view class="tab-item" @click="handleTabClick('search')">搜索</view> <!-- 更多Tab --> </view> <!-- 页面其他内容 --> </view> </template> <script> export default { methods: { // Tab点击事件处理函数 handleTabClick(tabName) { // 阻止默认行为,即不跳转页面 event.preventDefault(); // 根据点击的Tab名称决定显示什么弹窗 switch (tabName) { case 'home': uni.showModal({ title: '提示', content: '这是首页的提示信息', showCancel: false }); break; case 'search': uni.showModal({ title: '提示', content: '这是搜索的提示信息', showCancel: false }); break; // 更多case处理其他Tab点击 } } } } </script> ``` 注意:上述代码中`event.preventDefault();`是用于阻止默认的页面跳转行为,确保点击Tab不会跳转到相应的页面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值