使用 useIntervalFn 进行倒计时逻辑函数封装

396 阅读1分钟

使用vue3 写一个定时器

核心逻辑:每隔一秒钟,对 countTime 进行减 1 操作

  • resume:可执行函数,开启定时器,每隔一个时间执行一次
  • pause: 可执行函数,只要执行这个函数,定时器就会暂停
<template>
  <div>
    {{ countTime }}
    <button @click="start">开始定时器</button>
    <button @click="pause">暂停定时器</button>
    <button @click="resume">继续定时器</button>
  </div>
</template>

<script>
import { useIntervalFn } from '@vueuse/core'
import { ref } from 'vue'

export default {
setup () {
    const run = (count) => {
      const countTime = ref(0)
      const { pause, resume } = useIntervalFn(() => {
      // pause 暂停定时器  resume
      // 如果时间小于0 暂停定时器  否则 就自减
        if (countTime.value <= 0) {
          pause()
        } else {
          countTime.value--
        }
      }, 1000)
      // 开始
      const start = () => {
      // 可以在开始的时候重新进行赋值 把传递过来的值 直接赋值
        countTime.value = count
        // 开启定时器
        resume()
      }
      // 把 值返回出去
      return { pause, resume, start, countTime }
    }
    // 调用函数的时候传入实参  然后接受传出来的参数  最后使用setup的return  return 出去 让他响应在页面上
    const { pause, resume, start, countTime } = run(50)
    return {
      countTime,
      start,
      pause,
      resume
    }
  }
</script>