当前位置:首页 > VUE

vue实现setinterval计数

2026-01-18 20:25:20VUE

Vue 实现 setInterval 计数的方法

在 Vue 中实现 setInterval 计数功能,可以通过以下几种方式实现。需要注意在组件销毁时清除定时器,以避免内存泄漏。

方法一:在 mounted 钩子中启动定时器

<template>
  <div>计数: {{ count }}</div>
</template>

<script>
export default {
  data() {
    return {
      count: 0,
      timer: null
    }
  },
  mounted() {
    this.timer = setInterval(() => {
      this.count++
    }, 1000)
  },
  beforeDestroy() {
    clearInterval(this.timer)
  }
}
</script>

方法二:使用 methods 封装定时器逻辑

<template>
  <div>计数: {{ count }}</div>
</template>

<script>
export default {
  data() {
    return {
      count: 0,
      timer: null
    }
  },
  methods: {
    startCounter() {
      this.timer = setInterval(() => {
        this.count++
      }, 1000)
    },
    stopCounter() {
      clearInterval(this.timer)
    }
  },
  mounted() {
    this.startCounter()
  },
  beforeDestroy() {
    this.stopCounter()
  }
}
</script>

方法三:使用 Vue 3 Composition API

<template>
  <div>计数: {{ count }}</div>
</template>

<script>
import { ref, onMounted, onBeforeUnmount } from 'vue'

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

    onMounted(() => {
      timer = setInterval(() => {
        count.value++
      }, 1000)
    })

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

    return {
      count
    }
  }
}
</script>

方法四:使用 Vue 3 的 watchEffect

<template>
  <div>计数: {{ count }}</div>
</template>

<script>
import { ref, watchEffect } from 'vue'

export default {
  setup() {
    const count = ref(0)

    watchEffect((onInvalidate) => {
      const timer = setInterval(() => {
        count.value++
      }, 1000)

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

    return {
      count
    }
  }
}
</script>

注意事项

  • 定时器需要在组件销毁时清除,否则会导致内存泄漏
  • 在 Vue 3 中可以使用 onBeforeUnmountwatchEffect 的清理函数
  • 如果需要暂停和恢复计数功能,可以将定时器逻辑封装为方法

vue实现setinterval计数

标签: vuesetinterval
分享给朋友:

相关文章

vue实现好评弹框

vue实现好评弹框

Vue 实现好评弹框的方法 使用 Vue 实现好评弹框可以通过组件化方式完成,结合动态数据绑定和事件处理。以下是具体实现步骤: 1. 创建弹框组件 新建一个 RatingDialog.vue 组件…

vue中如何实现循环

vue中如何实现循环

在 Vue 中实现循环 Vue 提供了 v-for 指令用于实现循环渲染列表数据。v-for 可以遍历数组、对象或数字范围,生成动态的 DOM 元素。 遍历数组 使用 v-for 遍历数组时,语法…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 在 Vue 中实现密码框功能,可以通过原生 HTML 结合 Vue 指令或使用第三方组件库完成。以下是几种常见方案: 原生 HTML + Vue 双向绑定 <t…

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-se…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…

eventbus vue实现

eventbus vue实现

EventBus 实现原理 EventBus 是一种发布/订阅模式,用于 Vue 组件间的通信。核心是通过一个中央事件总线管理事件监听和触发。 创建 EventBus 在 Vue 项目中创建一个独立…