在小程序中/uni-app中,当没有登录时,点击结算按钮,3s后自动跳转到登录页面

1、首先在methods中定义一个方法showTips,用于展示倒计时的提示消息

复制代码
// 展示倒计时的提示消息
	showTips(n){
	// 调用uni.showToast()方法,展示提示消息
	  uni.showToast({
	// 不展示任何图标
	  icon:'none',
	// 提示的消息
	  title:'请登录后在结算!' +n+'秒后自动跳转到登录页',
	// 微页面添加透明遮罩层,防止点击穿透
	  mask:'',
	// 1.5s后小时
	  duration:1500
	})
}

2、在data中创建一个倒计时的秒数

复制代码
data() {
	return {
	// 倒计时的秒数
		seconds:3
	};
	},

3。点击结算按钮时判断用户是否登录了,如果没有,则调用 delaynavigate()进行倒计时的导航跳转

复制代码
settlement(){
	// 最后判断用户是否登录了,如果没有,则调用 delaynavigate()进行倒计时的导航跳转
	   if(!this.token) return this.delaynavigate()
	},

4、创建delaynavigate方法,延迟导航到我的页面

复制代码
delaynavigate(){
 // 展示提示消息,此时seconds 的值等于3
   this.showTips(this.seconds)
 // 创建计时器,每个一秒执行一次
	setInterval(()=>{
 // 先让秒数自减一
	 this.seconds--
 // 根据最新的秒数,进行消息提示
	 this.showTips(this.seconds)
					   
	},1000)
},
注意,此时定时器不会自动停止,此时秒数会出现等于0或者小于0的情况,解决方法

1、在data节点中声明定时器的id

复制代码
data() {
	return {
	// 倒计时的秒数
		seconds:3,
   //定时器的id
        timer:null
	};
	},

2、改造delaynavigate方法

复制代码
	      delaynavigate() {
				// 展示提示消息,此时seconds 的值等于3
				this.showTips(this.seconds)
				// 创建计时器,每个一秒执行一次
				// 将定时器的id存储到timer中
				this.timer = setInterval(() => {
					// 先让秒数自减一
					this.seconds--
					if (this.seconds <= 0) {
						// 清除定时器
						clearInterval(this.timer)
						// 跳转到我的页面
						uni.switchTab({
							url: '/pages/my/my'
						})

						return
					}
					// 根据最新的秒数,进行消息提示
					this.showTips(this.seconds)

				}, 1000)


			},

这样就可以实现啦!

相关推荐
计算机魔术师7 分钟前
OpenAI 宣称破解千禧年难题,数学家却说是「反例搜索」?
前端
志尊宝8 分钟前
Vue3 零基础每日笔记(015):条件渲染 v-if 与 v-show——控制 DOM 生死还是控制显隐
前端·vue.js·笔记
掘金者阿豪15 分钟前
OceanBase 和金仓怎么选?别只看分布式,复杂查询更考验架构取舍
前端·后端·架构
Bug修理工Bubble21 分钟前
Swift ARC:一个对象到底什么时候才会被释放?
前端
ClouGence26 分钟前
GPT-6 做 UI 自动化测试:Demo 惊艳,但真的适合长期回归吗?
前端·chatgpt·测试
阿酷tony1 小时前
视频专栏列表的防录屏水印和跑马灯效果(也可网站调用)
java·前端·音视频
凌风的跨境分享1 小时前
Temu店群运维提效:定时策略自动化任务全场景实操指南
大数据·运维·前端·人工智能·架构·自动化
linux_cfan2 小时前
videojs v10 源代码系列解读:06 · DOM 工具箱:事件、聚焦、Shadow DOM、定位
前端
博、、2 小时前
折扣卡CPS系统源码实战开发指南:从架构设计到落地部署全解析
小程序·需求分析
尾善爱看海2 小时前
Vue 面试进阶篇:Composition API、插槽、自定义指令……8 个章节 + 高频面试题全解析
前端·javascript·vue.js·面试·vue