← 질문 목록
#48깊이 0
useEffect 의존성 배열을 비워두면 언제 실행되는가?
프론트엔드기초
의존성 배열이 비면 마운트마다 한 번 실행된다. 개발 모드의 Strict Mode에서는 정리가 제대로 되는지 보려고 일부러 두 번 실행한다. 배열에 넣은 값이 변하지 않으면 리액트가 이펙트 함수를 다시 호출하지 않기 때문이다.
| 의존성 배열 | 실행 시점 |
|---|---|
| 빈 배열 | 마운트 시 1회 실행 |
| 값 포함 | 마운트 후 1회 + 해당 값이 변경될 때 |
| 배열 생략 | 매 렌더링마다 실행 |
의존성 배열에 따라 실행 시점이 달라진다. 배열을 비워두면 렌더링과 상관없이 생명주기상 마운트 시점에만 작동한다.
함수나 객체를 의존성 배열에 넣을 때는 주의해야 한다. 렌더링 시마다 주소값이 바뀌면 의존성 배열이 비어있지 않음에도 무한 루프에 빠질 수 있다.