在小程序中/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)


			},

这样就可以实现啦!

相关推荐
清山博客15 分钟前
OpenCV 人脸识别和比对工具
前端·webpack·node.js
要加油哦~17 分钟前
AI | 实践教程 - ScreenCoder | 多agents前端代码生成
前端·javascript·人工智能
程序员Sunday20 分钟前
说点不一样的。GPT-5.3 与 Claude Opus 4.6 同时炸场,前端变天了?
前端·gpt·状态模式
yq19820430115626 分钟前
静思书屋:基于Java Web技术栈构建高性能图书信息平台实践
java·开发语言·前端
aPurpleBerry29 分钟前
monorepo (Monolithic Repository) pnpm rush
前端
青茶36036 分钟前
php怎么实现订单接口状态轮询请求
前端·javascript·php
每天都要加油呀!1 小时前
TypeError: uni.requestPayment is not a function
小程序
鹏北海1 小时前
micro-app 微前端项目部署指南
前端·nginx·微服务
发现一只大呆瓜1 小时前
虚拟列表:从定高到动态高度的 Vue 3 & React 满分实现
前端·vue.js·react.js
css趣多多1 小时前
add组件增删改的表单处理
java·服务器·前端