Skip to content

useTimeout

手动调度一个会自动清理并始终调用最新回调的定时器。

签名

ts
function useTimeout(
    callback: () => void,
    delay?: number,
): {
    run: (delay?: number) => void;
    cancel: () => void;
};

基本用法

关键行为

  • run() 使用默认 delay,也可以临时传入新的延迟时间。
  • 再次调用 run() 会取消上一次尚未执行的定时器。
  • 回调变化时不会丢失最新实现,卸载时会自动取消定时器。

注意事项

  • 当默认 delayrun(delay) 都未传入时,不会创建定时器。
  • cancel() 只取消尚未执行的定时器,不会触发回调。