작성
·
433
답변 2
3
안녕하세요
useEffect 는 deps 배열의 내용이 변경될 때마다 함수를 호출하고, 그 만큼 addEventListener 가 호출되면서 브라우저가 호출해야하는 함수의 갯수도 늘어납니다
아래 코드는 value 가 변경될 때마다 addEventListener 로 새로운 함수를 입력하고 있습니다
value 가 1 => 2 => 3 순서로 변경됐다고 가정하면,
스크롤 시 우리가 원하는 결과는 콘솔 로그에 3이 출력되는 것일 텐데요
하지만 removeEventListener 를 호출하지 않아서 1, 2, 3 이 각각 출력될 겁니다
useEffect(() => {
addEventListener('scroll', () => console.log(value));
}, [value]);
1
안쓰는 함수를 listener 에서 제외한다고 생각하시면 될 것 같아요
호출을 막기 위한 것 외에도 안쓰는 함수를 제외하지 않으면 (필요 없는데도) 메모리에서 해제가 안되는 문제도 있을 수 있습니다