Итак, когда вы возвращаете функцию из useEffect
, она говорит, что указанная функция будет запущена до того, как useEffect
запустится снова. Таким образом, в основном, вы возвращаете функцию очистки из useEffect
.
рассмотрите этот сценарий
useEffect(()=>{
const timer = setTimeout(()=>{
setResult(result+1)
},3000)
return ()=>{
clearTimeout(timer)
}
},[result])
Приведенный выше код по существу говорит, что когда тайм-аут выполнен, ваше состояние результата будет увеличено на один, и когда в следующий раз эта же функция будет выполнена, ваша предыдущая переменная таймера будет очищена.
Кроме того, если вы передаете пустой массив в useEffect
и возвращаете функцию очистки, она действует так же, как componentWillUnmount
метод.