Я не понимаю, почему, когда я использую функцию setTimeout
, мой компонент реакции запускается в бесконечный console.log. Все работает, но ПК начинают адски лагать.
Некоторые люди говорят, что эта функция во время ожидания изменяет мое состояние и этот компонент рендеринга, который устанавливает новый таймер и так далее. Теперь мне нужно понять, как очистить это правильно.
export default function Loading() {
// if data fetching is slow, after 1 sec i will show some loading animation
const [showLoading, setShowLoading] = useState(true)
let timer1 = setTimeout(() => setShowLoading(true), 1000)
console.log('this message will render every second')
return 1
}
Очистить в другой версии кода не помогает:
const [showLoading, setShowLoading] = useState(true)
let timer1 = setTimeout(() => setShowLoading(true), 1000)
useEffect(
() => {
return () => {
clearTimeout(timer1)
}
},
[showLoading]
)