Необходимо помнить о следующих вещах, которые преобразуют классы в функциональные компоненты с помощью ловушек.
Сначала: используйте useState
крюк вместо состояния.
Второе: измените методы жизненного цикла на useEffect
hooks.
В-третьих: изменить переменные классов на useRef
.
import React, { useState, useEffect } from "react";
import moment from "moment";
const DayPicker = ()=> {
const [date, setDate] = useState(new Date());
const timerID = useRef(null);
useEffect(() => {
timerID.current = setInterval(() => tick(), 1000);
return () => {
// This function will execute on unmount
clearInterval(timerID.current);
}
}, []) // empty array here signifies that the effect will be run once on initial mount
const tick = () => {
setDate(new Date())
}
return (
<div className={style.dayPicker}>
{moment()
.add(daysToAdd ? daysToAdd : 0, "day")
.format("ddd D MMMM")}
</div>
);
}
export default DayPicker;
Для более детального понимания каждого из этих крючков, прочитайте Реактивная документация .