2025-11-11 18:55:16 +09:00
|
|
|
import { useState, useEffect } from 'react';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 현재 시간을 반환하는 최적화된 훅
|
|
|
|
|
* 1분마다 자동 업데이트
|
2025-11-25 21:07:10 +09:00
|
|
|
*
|
|
|
|
|
* ✅ SSR-safe: useEffect를 사용하여 클라이언트에서만 시간 초기화
|
|
|
|
|
* 이를 통해 서버/클라이언트 하이드레이션 불일치 방지
|
2025-11-11 18:55:16 +09:00
|
|
|
*/
|
|
|
|
|
export function useCurrentTime(updateInterval = 60000) {
|
2025-11-25 21:07:10 +09:00
|
|
|
// ✅ 초기값을 빈 문자열로 설정 (서버 렌더링 시 안전)
|
|
|
|
|
const [currentTime, setCurrentTime] = useState('');
|
2025-11-11 18:55:16 +09:00
|
|
|
|
|
|
|
|
useEffect(() => {
|
2025-11-25 21:07:10 +09:00
|
|
|
// ✅ 클라이언트 마운트 시 즉시 현재 시간 설정
|
|
|
|
|
setCurrentTime(new Date().toLocaleString('ko-KR'));
|
|
|
|
|
|
|
|
|
|
// 주기적 업데이트
|
2025-11-11 18:55:16 +09:00
|
|
|
const interval = setInterval(() => {
|
|
|
|
|
setCurrentTime(new Date().toLocaleString('ko-KR'));
|
|
|
|
|
}, updateInterval);
|
|
|
|
|
|
|
|
|
|
return () => clearInterval(interval);
|
|
|
|
|
}, [updateInterval]);
|
|
|
|
|
|
|
|
|
|
return currentTime;
|
|
|
|
|
}
|