import React, { useState, useCallback, useEffect, useRef } from 'react'; import DateItem from './DateItem' function Footer(props) { const { withTime = true, showDate } = props; const [date, setDate] = useState([]); const dateStrRef = useRef(''); const timeBoxRef = useRef(); const fixed0 = useCallback((num) => { num = parseInt(num) if (num < 10) num = "0" + num; return num + ''; }, []) const getTime = useCallback(() => { let dateStr = dateStrRef.current; let currentDate = new Date(); let year = currentDate.getUTCFullYear(); year = fixed0(year); let month = currentDate.getMonth() + 1; month = fixed0(month); let day = currentDate.getDate(); day = fixed0(day); let hour = currentDate.getHours(); hour = fixed0(hour); let minute = currentDate.getMinutes(); minute = fixed0(minute); let second = currentDate.getSeconds(); second = fixed0(second); let newDate = `${year}-${month}-${day}`; let time = `${hour}:${minute}:${second}`; if (showDate) { setDate(showDate.split('')); }else if(dateStr !== newDate && !showDate) { dateStrRef.current = newDate; setDate(newDate.split('')); } withTime && timeBoxRef.current && (timeBoxRef.current.innerText = time) }, [ withTime, showDate ]); const updateTime = useCallback(() => { getTime(); if (!showDate) { setTimeout(updateTime, 1000) } }, [getTime, showDate]) useEffect(() => { updateTime(); // eslint-disable-next-line }, [updateTime]); return (