Flowseal / TravelPractice

0 stars 0 forks source link

lesson-8: Зачем нужен первый useEffect #13

Open LehaIvanov opened 1 year ago

LehaIvanov commented 1 year ago

https://github.com/Flowseal/TravelPractice/blob/8e8d193b2c2ee52de62bb03317dd298d916e160b/Lesson8%20(Currency%20Converter)/WebAppUI/src/hooks/UseInterval.ts#L8

Не совсем понимаю зачем нужен первый useEffect, посмотри, пожалуйста, без знего ведь тоже должно всё работать.

import { useEffect, useRef } from "react";

export default function useInterval(callback: () => void, delay: number) {
    useEffect(() => {
        const tick = () => {
            callback();
        }
        const id = setInterval(tick, delay);
        return () => clearInterval(id);
    }, [delay]);
};
Flowseal commented 1 year ago

Не работает. Сама проблема была в том, что я не мог получить актуальные данные из useState внутри хука useEffect в коллбеке setInterval. Данный кастомный хук это решает.

Если сделать также, как и в коде выше, то будут отправляться неактуальные данные (пустые) из useState (paymentCurrency/purchasedCurrency) image