effectdependency-array

useEffect dependency array를 어떻게 이해하고 있나요?

예상 시간
7
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

dependency array에서 값을 빼면 왜 stale closure가 생기나요?

부가 설명

dependency array를 “몇 번 실행할지 정하는 옵션”으로만 보면 실수하기 쉽습니다. effect 안에서 어떤 state를 읽고 있는데 dependency에서 빼면, effect는 예전 값을 계속 바라보는 stale closure 문제를 만들 수 있습니다.

useEffect(() => {
  console.log(query);
}, []); // query가 바뀌어도 effect는 다시 실행되지 않음

정말 한 번만 실행해야 한다면 effect 안에서 최신 값이 필요 없는 구조인지 먼저 확인해야 합니다.

한 줄 정리

Dependency array는 effect 실행을 억지로 줄이는 장치가 아니라, effect가 의존하는 reactive 값을 React에게 알려주는 목록입니다.