React/문법
[React] useEffect (3)
위르겐
2022. 5. 31. 13:52
다음은 useEffect에 있는 clean up 기능을 알아보자
useEffect(()=>{
console.log('through the wind')
return ()=>{
console.log('walk on')
}
})
useEffect 함수 내에 return 함수를 생성한 후 코드를 작성하면
외부요인에 의해 컴포넌트가 생성되거나 재렌더링 될 때
'through the wind'라는 문구가 출력이 되기전에
'walk on'이라는 문구가 출력 된다.
walk on
through the wind 가 차례로 console에 출력이 되는것이다.
이 clean up기능은
useEffect 바로 밑의 함수가 실행되기전에
기존에 있던 실행코드를 정리하는 용도로 쓰인다.
예를들어
useEffect(()=>{
let a = setTimeout(()=>{ setAlert(false) }, 2000)
return ()=>{
clearTimeout(a)
}
})
다음과 같은 코드는
컴포넌트가 재렌더링되거나 mount 될 때
2초 후 Alert를 false로 바꾸는 함수인데
2초가 지나기전에 클라이언트 조작에의해
재렌더링이 또 된다면
타이머가 꼬이게 되고
좋은 유저경험이 되지 않을 것이다.
이런 사태를 방지하기 위해
return함수안에
clearTimeout함수로 기존의 타이머를 지워주는 것
이게 clean up 기능의 핵심.
반응형