Skip to Content
🎉 Nextra 4.0 is released. dimaMachina is looking for a new job or consulting.
hooksuseCountDownTimer

useCountDownTimer

useCountDownTimer 基于 ahooks 提供的 useCountDown,封装实现了一段简易的倒计时逻辑。它允许你以秒为单位指定倒计时时长,自动计算剩余秒数,并提供开始与停止的操作。

函数签名

function useCountDownTimer(seconds: number): { count: number; isCounting: boolean; start: (updateSeconds?: number) => void; stop: () => void; };

参数

参数类型默认值说明
secondsnumber用于初始化倒计时时长(单位:秒)

返回值

字段类型说明
countnumber剩余的倒计时秒数,自动向下取整。若为 0 表示已完成或尚未启动。
isCountingboolean表示当前是否处于倒计时状态(true 表示正在倒计时,false 表示已结束或未开始)。
start(updateSeconds?: number) => void启动/重置倒计时,若传入新的 updateSeconds,则以该值作为新的倒计时秒数。
stop() => void停止倒计时,将剩余秒数重置为 0。

使用示例

import React from 'react'; import useCountDownTimer from '@/hooks/useCountDownTimer'; export default function CountDownExample() { const { count, isCounting, start, stop } = useCountDownTimer(10); return ( <div> <p>倒计时剩余: {count} 秒</p> <p>状态: {isCounting ? '倒计时中' : '未开始或已结束'}</p> <button onClick={() => start()}>开始倒计时(10秒)</button> <button onClick={() => start(5)}>开始倒计时(5秒)</button> <button onClick={() => stop()}>停止</button> </div> ); }

在上述示例中:

  1. 初始值10,因此调用 start() 会倒计时 10 秒。
  2. 若在运行中再次调用 start(5),则会重置并开始一个新的 5 秒倒计时。
  3. stop() 随时终止当前倒计时并将剩余秒数清零。
  4. countisCounting 会在倒计时期间持续更新,让你方便地控制 UI 显示或触发其他业务逻辑。
Last updated on