【发布时间】:2021-10-20 10:57:29
【问题描述】:
这里有什么错误我在这里使用时刻 js 创建当前时间到 2 分钟倒计时我正在分阶段解决问题计时器在 1:59 停止而不是在 1:59 之后减少时间
const CountDownTimer = () => {
const [duration, setDuration] = useState(null);
const getFinalTime = useCallback((duration) => {
const currentDuration = moment.duration(duration, "milliseconds");
let finalMinutes = currentDuration?.minutes();
let finalSeconds = currentDuration?.seconds();
finalMinutes = finalMinutes < 10 ? `0${finalMinutes}` : finalMinutes;
finalSeconds = finalSeconds < 10 ? `0${finalSeconds}` : finalSeconds;
return `${finalMinutes}:${finalSeconds}`;
}, []);
useEffect(() => {
const startTimer = moment(billData?.createdAt);
const endTimer = moment(billData?.createdAt).add(2, "minutes");
const duration = moment.duration(endTimer.diff(startTimer), "milliseconds");
const interval = setInterval(() => {
const newDuration = moment
.duration(duration - 1000, "milliseconds")
.asMilliseconds();
setDuration(newDuration);
}, 1000);
return () => clearInterval(interval);
}, [billData?.createdAt]);
// in getFinalTime passing duration
return <>{getFinalTime(duration)}</>;
};
export default CountDownTimer;
【问题讨论】:
-
你没有告诉我们它有什么问题,所以很难说。
-
什么不起作用?有错误代码吗?这需要更多信息。
-
@AKX 描述已更新
-
@Kantivekariya 您甚至没有在您粘贴的代码中使用
getFinalTime函数。 -
@AKX 他们只是通过持续时间
标签: javascript reactjs momentjs