import { useEffect, useState, useCallback } from 'react'; import { Button, Paper, Typography, Stack, Box } from '@mui/material'; import ContentCopyIcon from '@mui/icons-material/ContentCopy'; import CheckIcon from '@mui/icons-material/Check'; import { useCopy } from './useCopy'; /** * 时间戳显示和执行组件 * * @component * @example * ```jsx * * ``` * * @returns {JSX.Element} 时间戳组件 */ export function TimestampExecution() { const [currentTimestamp, setCurrentTimestamp] = useState(() => Math.floor(Date.now())); const [showMilliseconds, setShowMilliseconds] = useState(true); const [isRunningTimestamp, setIsRunningTimestamp] = useState(true); const displayTimestamp = showMilliseconds ? currentTimestamp : Math.floor(currentTimestamp / 1000); const unitText = showMilliseconds ? '毫秒' : '秒'; useEffect(() => { let timer: number; if (isRunningTimestamp) { const interval = showMilliseconds ? 100 : 1000; timer = window.setInterval(() => { setCurrentTimestamp(Math.floor(Date.now())); }, interval); } return () => clearInterval(timer); }, [isRunningTimestamp, showMilliseconds]); const toggleUnit = useCallback(() => { setShowMilliseconds((prev) => !prev); }, []); const toggleTimestamp = useCallback(() => { setIsRunningTimestamp((prev) => !prev); }, []); const unitButtonLabel = showMilliseconds ? '切换为秒显示' : '切换为毫秒显示'; const toggleButtonLabel = isRunningTimestamp ? '停止时间戳自动更新' : '开始时间戳自动更新'; const toggleButtonText = isRunningTimestamp ? '停止' : '开始'; const { isCopied, copy } = useCopy(); return ( {displayTimestamp} {unitText} {/* */} ); }