当前位置:首页 > VUE

vue实现正计时

2026-03-09 03:10:25VUE

Vue 实现正计时的方法

使用 setInterval 实现基础正计时

在 Vue 组件的 data 中定义计时器变量和当前时间:

data() {
  return {
    timer: null,
    seconds: 0
  }
}

methods 中创建开始计时的方法:

startTimer() {
  this.timer = setInterval(() => {
    this.seconds++
  }, 1000)
}

mounted 生命周期钩子中启动计时器:

mounted() {
  this.startTimer()
}

在组件销毁时清除计时器:

beforeDestroy() {
  clearInterval(this.timer)
}

格式化显示时间

添加一个计算属性来格式化显示的时间:

computed: {
  formattedTime() {
    const hours = Math.floor(this.seconds / 3600)
    const minutes = Math.floor((this.seconds % 3600) / 60)
    const secs = this.seconds % 60

    return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`
  }
}

在模板中使用:

<template>
  <div>{{ formattedTime }}</div>
</template>

使用 Composition API 实现

对于 Vue 3,可以使用 Composition API:

import { ref, onMounted, onUnmounted } from 'vue'

export default {
  setup() {
    const seconds = ref(0)
    let timer = null

    const startTimer = () => {
      timer = setInterval(() => {
        seconds.value++
      }, 1000)
    }

    onMounted(() => {
      startTimer()
    })

    onUnmounted(() => {
      clearInterval(timer)
    })

    const formattedTime = computed(() => {
      const hours = Math.floor(seconds.value / 3600)
      const minutes = Math.floor((seconds.value % 3600) / 60)
      const secs = seconds.value % 60

      return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`
    })

    return {
      formattedTime
    }
  }
}

添加暂停和继续功能

扩展功能实现暂停和继续:

vue实现正计时

data() {
  return {
    isPaused: false
  }
},
methods: {
  toggleTimer() {
    this.isPaused = !this.isPaused
    if (this.isPaused) {
      clearInterval(this.timer)
    } else {
      this.startTimer()
    }
  }
}

使用第三方库

对于更复杂的需求,可以考虑使用第三方库如 vue-countupmoment.js 来处理时间格式化和显示。

标签: vue
分享给朋友:

相关文章

vue实现签约合作弹窗

vue实现签约合作弹窗

实现签约合作弹窗的步骤 使用Vue实现签约合作弹窗可以通过组件化方式完成,结合模态框和表单交互逻辑。以下是具体实现方法: 1. 创建弹窗组件 新建一个Vue组件文件(如SignContractDia…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…

vue实现换肤

vue实现换肤

使用 CSS 变量实现换肤 在 Vue 项目中,可以通过 CSS 变量(Custom Properties)动态切换主题色。CSS 变量可以在运行时修改,适合实现换肤功能。 定义全局 CSS 变量:…

vue实现portal

vue实现portal

Vue 实现 Portal 功能 Portal 是一种将子节点渲染到父组件 DOM 层级之外的 DOM 节点的技术,常用于实现模态框、弹出层等需要脱离当前组件层级的场景。Vue 可以通过多种方式实现…

vue 实现loading

vue 实现loading

Vue 实现 Loading 的方法 使用 v-if 和 v-show 控制显示 在 Vue 中可以通过 v-if 或 v-show 控制 loading 组件的显示与隐藏。v-if 会动态创建或销毁…

vue删除实现

vue删除实现

Vue 删除功能的实现方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 方法一:使用数组的 splice 方法 通过索引删除数组中的元素,适用于列表渲染的场景。 methods: {…