如图 效果是 :后面时间倒计时
import React, { useState, useEffect } from 'react';
import moment from 'moment';
/**
* 秒转分钟
* @param {Number|String} sec 秒
*/
const secondsToMinutes = sec => {
sec = Number(sec);
let minutes = moment.duration(sec, 'seconds').minutes();
let seconds = moment.duration(sec, 'seconds').seconds();
minutes < 10 ? (minutes = '0' + minutes) : minutes;
seconds < 10 ? (seconds = '0' + seconds) : seconds;
return minutes + ':' + seconds;
};
function clock(props) {
const { className, endTime } = props;
const [date, setDate] = useState(moment(endTime).diff(moment(), 'seconds'));
useEffect(() => {
const tick = () => setDate(moment(endTime).diff(moment(), 'seconds'));
const timerId = setTimeout(tick, 1000);
// 返回一个清除函数, 清除函数会在组件卸载前执行,执行当前effect前对上一个effect进行清除
return () => clearTimeout(timerId);
}, [date]);
return <span className={className}>{secondsToMinutes(date)}</span>;
}
export default clock;