uni-app vuex全局计时

2023-11-03

功能需求,在A页面进入时候开始计时中间会去到B页面查看数据,但是并没有销毁当前页面,所以计时一直在,直到在B页面提交数据,才结束计时

在根文件夹创建 store文件夹,同时创建index.js文件

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
const store = new Vuex.Store({
  state: {
	// 开始时间
	// startTime: null,
	// 结束时间
	endTime: null,
	// 计时器对象
	timerot: null,
	// 计时时间
	time: 0 
  },
  mutations: {
	// 设置计时器对象
	setTimer(state, timerot) {
	  state.timerot = timerot
	},
	// 设置计时时间
	setTime(state, time) {
	  state.time = time
	},
	// 停止计时器
	stopTimer(state) {
	  clearInterval(state.timerot)
	  state.timerot = null
	},
	// 重置计时时间
	resetTime(state) {
	  state.time = 0
	}
	
  },
  actions: {
  }
})

export default store

在main.js引入

import store from './store'

App.mpType = 'app'

const app = new Vue({
	store,
	...App
})
app.$mount()

在需要计时的页面引入

<template>
	<text class="titlename">{{ formatTime }}</text>
</template>

<script>
import { mapMutations } from 'vuex'

export default {
		beforeDestroy() {
		    this.stopTimer()
		},
		onLoad() {
			// 计时开始
			this.startTimer()
		},
		methods: {
			// 顶部计时
			// 开始计时
			startTimer() {
			    this.resetTime()
			    this.setTimer(setInterval(() => {
					this.setTime(this.time + 1)
			    }, 1000))
			},
			...mapMutations(['setTimer', 'setTime', 'resetTime']),
		},
		computed: {
			 // 格式化计时时间
			formatTime() {
				const minutes = Math.floor(this.time / 60) < 10 ? "0" + Math.floor(this.time / 60) : Math.floor(this.time / 60)
				const seconds = this.time % 60
				return `${minutes}:${seconds.toString().padStart(2, '0')}`
			},
		}
	}
</script>

在需要结束的页面调用

<template>
	<view class="oo_item sure_i_want_to_exit out_flex_cc" 
	@click="ConfirmSubmissionOfPapers"
	>
		确认提交
	</view>
</template>


<script>
import { mapMutations } from 'vuex'

export default {
		methods: {
			// 确认提交
			ConfirmSubmissionOfPapers(){
				// 结束计时
				this.stopTimer()
				// 在这里可以获取到计时时间 time,并进行后续操作
				const time = this.time
				const minutes = Math.floor(time / 60)
				const seconds = time % 60
				console.log("结束时间的整数",time);
				console.log("结束时间",`${minutes}:${seconds.toString().padStart(2, '0')}`);
				
			},
			...mapMutations(['stopTimer']), // 结束计时
		},

	}
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uni-app vuex全局计时 的相关文章

随机推荐

  • Flutter 修改appBar 高度

    Scaffold appBar PreferredSize child AppBar title Text AppBar bottom appBarView preferredSize Size fromHeight 60 0 自定义高度
  • C++输出螺旋数组

    C 输出螺旋数组 思路 具体实现代码如下 1 建立二维数组 2 声明变量 3 循环开始 3 1 第一个循环 数组从左到右赋值 3 2 第二个循环 数组从上到下赋值 3 3 第三个循环 数组从右到左赋值 3 4 第四个循环 数组从下到上赋值
  • vue3调用摄像头,做校验,没有摄像头或者不成功,提示用户

    检查浏览器是否支持getUserMedia方法 if navigator mediaDevices navigator mediaDevices getUserMedia 请求访问相机设备 navigator mediaDevices ge
  • SpringMvc源码分析(二) 请求执行前的准备过程:@Controller/@RequestMapping注解解析为RequestMappingInfo的过程

    在SpringBoot项目中 应用在启动时会扫描项目中的 Controller和 RequestMapping注解 并将其解析为RequestMapping Bean类型的对象供DispatcherServlet调用 本文主要分析这个解析的
  • 前端js的event光标事件实现div方块移动

    方法一 普通做法 div div
  • python入门学习小工具制作系列各种小工具整理

    一 制作基于windows系统批量重命名文件小工具 参考博客 使用python做一个批量重命名文件的小工具 讷言丶的博客 CSDN博客 效果展示 临时01 代码实现 import os from tkinter import filedia
  • 全面了解环保HJ212协议和使用

    1 环保HJ212协议介绍 环保HJ212协议是在环保行业中使用的数据传输协议 数据终端 采集终端 环保仪等终端设备把采集好的数据发送到环保平台使用这个协议 这个协议是环保行业的标准协议 所以实现了各种终端和平台之间的完美对接 只要符合协议
  • 送书 | 《商品期货量化交易实战》

    今天是周三 又到了给大家送书的时刻啦 这次给大家带来的是 商品期货量化交易实战 文末查看送书规则 简介 本书首先讲解量化交易基础和Python编程入门 再讲解量化交易API 然后讲解CTA的趋势跟踪策略和回归策略 并且配合量化交易策略实战案
  • leetcode【2023】

    什么是华为OD机试 华为OD机试是华为的笔试 因为是在电脑上做题 所以称为机试 主要用于评估求职者是否适合所申请的职位 华为OD机试通常涵盖了多个测试领域 如算法构造 编程技巧以及错误修复等 其目标是全面评估求职者的基础知识 实践技能和编程
  • gojs 绘制UML连线图

  • A Survey on Deep Transfer Learning 2018 翻译

    A Survey on Deep Transfer Learning 2018 翻译 o 虽然这篇文章是2018年的 不是很新 但是写的通俗易懂 很适合刚接触迁移学习的同学 所以就翻译了 independent and identicall
  • Python基础知识(七):类、对象与魔法方法

    类与对象 1 对象 属性 方法 对象是类的实例 换句话说 类主要定义对象的结构 然后我们以类为模板创建对象 类不但包含方法定义 而且还包含所有实例共享的数据 封装 信息隐蔽技术 我们可以使用关键字 class 定义 Python 类 关键字
  • CSS3 SVG实现可爱的动物哈士奇和狐狸动画

    点击上方公众号 可快速关注 英文 David Khourshid 译文 码农网 小峰 www codeceo com article css3 svg husky and fox html 今天 我想向大家展示如何巧妙地使用HTML CSS
  • 论"大数据"时代下的海量数据存储技术

    高清 长周期呈现海量存储需求 高清已经在安防行业全面铺开应用 除了带给用户能够看得更清的良好视觉感受外 对存储容量的需求亦成几何式增长 例如 前端IPC有130W到500W像素 码流也从有2Mbps到8Mbps 而一个130W像素 8Mbp
  • 开源OCR引擎Tesseract-OCR

    Overview Tesseract的OCR引擎最先由HP实验室于1985年开始研发 至1995年时已经成为OCR业内最准确的三款识别引擎之一 然而 HP不久便决定放弃OCR业务 Tesseract也从此尘封 数年以后 HP意识到 与其将
  • VSCode 必装的 10 个高效开发插件

    本文介绍了目前前端开发最受欢迎的开发工具 VSCode 必装的 10 个开发插件 用于大大提高软件开发的效率 VSCode 的基本使用可以参考我的原创视频教程 VSCode 高效开发必装插件 VSCode Visual Studio Cod
  • jquery val() 获取不到值的问题排查

    表单校验用jquery validation 实现 基本功能很快实现 在测试时发现自定义的一个比较开始结束日期的校验不起作用 var begin param val var reg new RegExp g begin begin repl
  • arcgis 9.3 sde 安装 启动服务问题

    1 arcgis 9 3 注册 服务 命令 sdeservice o create d oracle orcl p sde i esri sde 2 启动 sde 服务 报错 3 以上1命令在机器上执行不认 用以下命令 sdeservice
  • 【DevOps-监控】生产环境是如何落地一套全方位的监控系统

    生产环境监控究竟需什么样的功能 我们试想一下 如果部署一个监控系统到生产环境 需要满足哪些功能呢 既然是监控 肯定需要监控我们的主机资源信息包括cpu 内存 网络 磁盘等信息吧 其次还得监控容器的相关资源信息 然后我们可能还需要历史数据 几
  • uni-app vuex全局计时

    功能需求 在A页面进入时候开始计时中间会去到B页面查看数据 但是并没有销毁当前页面 所以计时一直在 直到在B页面提交数据 才结束计时 在根文件夹创建 store文件夹 同时创建index js文件 import Vue from vue i