polyak-888
@polyak-888
Js, React.js, css, frontend

Почему не отрабатывает clearInterval?

const [timer, setTimer] = useState(0);
    const [clearInt, setClearInt] = useState(null);

    const startTime = () => {
        setTimer(7);
        let clearTimer = setInterval(() => {
            setTimer(currentTimer => currentTimer - 1);
        }, 1000);
        setClearInt(clearTimer);
    };

    useEffect(() => {

        return () => {
             console.log(timer);
            clearInterval(clearInt);
        }
    },[]);

    useEffect(()=> {
        console.log(clearInt)
        if(timer === 0) {
            clearInterval(clearInt);
        }
    }, [timer]);


Почему при размонтировании компонента в clearInterval не попадает clearTimer и происходит утечка памяти
  • Вопрос задан
  • 233 просмотра
Решения вопроса 1
@Che603000
c 2011 javascript
Делаете все в одном useEffect. Общий подход ниже
useEffect(() => {
        const key = setInterval(()=>{
            // какая-то логика 
        });
        return () =>   clearInterval(key);  // вызовется при unmoant    
    },[]);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы