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


			},

这样就可以实现啦!

相关推荐
吃杠碰小鸡18 分钟前
高中数学-数列-导数证明
前端·数学·算法
kingwebo'sZone24 分钟前
C#使用Aspose.Words把 word转成图片
前端·c#·word
xjt_090143 分钟前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
游戏开发爱好者81 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
我是伪码农1 小时前
Vue 2.3
前端·javascript·vue.js
夜郎king1 小时前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
夏幻灵2 小时前
HTML5里最常用的十大标签
前端·html·html5
Mr Xu_3 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
未来龙皇小蓝3 小时前
RBAC前端架构-01:项目初始化
前端·架构
程序员agions3 小时前
2026年,微前端终于“死“了
前端·状态模式