useEffect(()=>{}, [])
콜백 함수
와 의존성 배열(dependency array)
.useEffect는 의존성 배열(dependency array)을 인자로 받는다.
의존성 배열은 useEffect가 실행되는 조건을 결정한다.
이 배열에 포함된 값들 중 하나라도 변경되었을 때에만 useEffect가 실행된다.
의존성 배열을 지정하지 않으면 매 렌더링 시에 useEffect가 실행된다.
올바른 의존성 배열을 설정하여 필요한 시점에만 useEffect가 실행되도록 해야 한다.
useEffect 내부에서 상태(state)를 변경하면 컴포넌트가 다시 렌더링되고 useEffect가 다시 실행된다.
이렇게 되면 무한한 루프가 발생할 수 있다.
따라서 useEffect 내부에서 상태를 변경할 때는 주의해야 한다.
상태를 변경해야 하는 경우, 의존성 배열을 적절히 설정하여 불필요한 렌더링과 useEffect 실행을 방지해야 한다.
useEffect는 부수 효과를 관리하기 위해 사용되는데, 이때 정리(clean-up) 함수를 활용할 수 있다.
useEffect 내부에서 반환하는 정리 함수는 컴포넌트가 언마운트되거나 업데이트되기 직전에 실행된다.
이를 통해 리소스 해제, 이벤트 리스너 제거 등의 작업을 수행할 수 있다.
정리 함수가 필요하지 않은 경우에는 빈 함수로 반환하거나 반환을 생략할 수 있다.
useEffect 내부에서 비동기 작업을 수행하는 경우, 컴포넌트가 언마운트되었을 때 해당 작업이 완료되지 않았다면 문제가 발생할 수 있다.
이를 방지하기 위해 useEffect 내부에서 비동기 작업을 수행할 때 취소나 정리 작업을 진행해야 한다.
예를 들어 useEffect 내부에서 axios를 사용하여 API 요청을 보내는 경우, 해당 요청을 취소하는 방법을 알고 있어야 한다.
위의 유의사항을 염두에 두고 useEffect를 사용하면 좀 더 안정적이고 예상 가능한 동작을 갖는 컴포넌트를 개발할 수 있다!
참고 사이트
[번역] useEffect 완벽 가이드