[이슈] useEffect에 dependency props이 있을때 cleanup 함수
2021. 3. 5. 17:53ㆍ프로그래밍-Web/React
기본적으로 useEffect의 clean-up함수는 컴포넌트가 unmount 될 때 실행된다.
따라서 컴포넌트가 unmount 될때의 이벤트를 clean up 함수에 걸어주는것이 일반적이다.
그러나 props가 비어있지 않다면 clean up 함수는 우리 기대와 다르게 동작한다.
다음과 같은 예시에서 해당 컴포넌트는 ratingId가 바뀔때 '마운트'라는 콘솔이 찍힐것이다.
그러나 ratingId가 바뀔때마다 cleanup 함수인 '언마운트' 콘솔도 함께 찍힌다
그 이유는 실제 화면에서 테스트해보면 알 수 있다.
props가 바뀔때마다 hook이 새로 만들어지기때문에, 항상 이전 useEffect를 unmount하고 다시 새로운 useEffect를 mount하는 것이다.
실제로 ratingId라는 props를 바꾸면 언마운트-> 마운트의 순서로 콘솔이 찍히는데, 이는 이전 useEffect를 지우고 새로운 hook을 렌더링 하기 때문이다.
물론 아예 unmount될때도 clean up 함수는 실행 될 것이다.
그렇다면 오직 unmount 상황에서만 clean up함수를 실행하고 싶다면 어떻게 해야 할까?
이때는 무조건 deps가 빈 배열인 useEffect만 활용하여야 한다.
'프로그래밍-Web > React' 카테고리의 다른 글
[이슈] useCallback의 empty array 조건 (0) | 2021.02.05 |
---|---|
[이슈] state 배열 수정하기 (0) | 2021.02.03 |
[이슈] usestate의 배열 속 원소 찾아서 제거하기 (0) | 2021.02.03 |
[이슈] state에 항목 추가하기 (0) | 2021.02.03 |
[정리] Virtual Scroll과 Infinity Scroll (0) | 2021.02.02 |