/** * 任务计时Hook * 用于实时计算和更新任务进行时间 */ import { useState, useEffect, useRef } from 'react'; import { calculateDuration, formatMinutes } from '../utils/timeFormatter'; /** * 任务计时Hook * @param {number|string} startTime - 开始时间戳(毫秒) * @param {boolean} isFallback - 是否为降级模式 * @returns {Object} { duration, formattedTime, isFallback } */ export const useTaskTimer = (startTime, isFallback = false) => { const [duration, setDuration] = useState(0); const timerRef = useRef(null); // 初始化duration useEffect(() => { if (startTime) { const initialDuration = calculateDuration(startTime); setDuration(initialDuration); } }, [startTime]); // 启动定时器 useEffect(() => { // 清理之前的定时器 if (timerRef.current) { clearInterval(timerRef.current); } // 只有当startTime存在时才启动定时器 if (startTime) { timerRef.current = setInterval(() => { setDuration(prev => prev + 10); // 每10秒增加10秒 }, 10000); // 10秒间隔 } // 组件卸载时清理定时器 return () => { if (timerRef.current) { clearInterval(timerRef.current); timerRef.current = null; } }; }, [startTime]); // 格式化时间为显示文本 const formattedTime = formatMinutes(duration); return { duration, // 持续时间(秒) formattedTime, // 格式化后的时间("XX分钟") isFallback // 是否为降级模式 }; };