You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Circular-Progressbar点击+10秒按钮动画延迟1秒问题求助

计时器与环形进度条同步问题修复

问题根源

你代码中点击+10秒按钮时,用setTimeout延迟1秒更新进度条的duration状态,但计时器数值是立即更新的,这直接导致了两者不同步。

修复方案

1. 移除不必要的延迟逻辑

修改handleAddTen函数,直接同步更新duration和timeLeft,不需要用setTimeout包裹状态更新:

const handleAddTen = () => {
  setDuration(prev => prev + 10);
  setTimeLeft(prev => prev + 10);
};

2. 优化状态关联(可选)

为避免维护两个独立状态带来的同步风险,可以让timeLeft始终基于duration初始化,点击按钮时同步重置:

// 初始化时让timeLeft等于duration
const [duration, setDuration] = useState(60);
const [timeLeft, setTimeLeft] = useState(duration);

// 点击按钮时同步更新两个状态
const handleAddTen = () => {
  const newDuration = duration + 10;
  setDuration(newDuration);
  setTimeLeft(newDuration);
};

这样修改后,点击+10秒按钮时,计时器数值和环形进度条的动画会立即同步更新,不会再有延迟。

内容的提问来源于stack exchange,提问作者5C6 purushotham Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:55:25