inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전 리액트 프로그래밍

useEffect 실전 활용법2

클린업에 대해 궁금한 점이 있습니다!

504

wjdxor133

작성한 질문수 1

0

예제를 보면 useEffect를 사용해서 등록된 이벤트 리스너addEventListener(), removeEventListener()를 클린업 해주는데, 이렇게 처리하는 이유가 궁금합니다.

또 리엑트에서는 왜 클린업을 해줘야 하는건가요?

react redux

답변 2

3

이재승

안녕하세요
useEffect 는 deps 배열의 내용이 변경될 때마다 함수를 호출하고, 그 만큼 addEventListener 가 호출되면서 브라우저가 호출해야하는 함수의 갯수도 늘어납니다

아래 코드는 value 가 변경될 때마다 addEventListener 로 새로운 함수를 입력하고 있습니다
value 가 1 => 2 => 3 순서로 변경됐다고 가정하면,
스크롤 시 우리가 원하는 결과는 콘솔 로그에 3이 출력되는 것일 텐데요
하지만 removeEventListener 를 호출하지 않아서 1, 2, 3 이 각각 출력될 겁니다

  useEffect(() => {
    addEventListener('scroll', () => console.log(value));
  }, [value]);

1

wjdxor133

친절한 답변 감사합니다! 🙏🏻

그렇다면 쓸데없는 함수 호출을 막기 위해서 클린업을 해주는거라고 생각하면 되는 건가요?!

0

이재승

안쓰는 함수를 listener 에서 제외한다고 생각하시면 될 것 같아요
호출을 막기 위한 것 외에도 안쓰는 함수를 제외하지 않으면 (필요 없는데도) 메모리에서 해제가 안되는 문제도 있을 수 있습니다

자동완성기능이 안되네요 ..

0

532

3

화면에 에러가나네요 ...

0

541

2

setValue 함수 질문 있습니다.

0

855

1

찾아야한다 실습 문의

0

485

1

훅 기초 익히기 - 배치 처리와 순차적 처리의 차이

0

493

1

cra, next.js 관련 질문 드립니다!

0

614

1

useState 배열 비구조화 문법 질문!

0

260

1

Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'

1

1091

2

Saga 오류 이거 혹시 왜이런지 알수 있을까요?

0

380

2

http://localhost:3001/user/search?keyword=u 이걸로 데이터를 보는데 저는 사이트에 연결할 수 없다고 나오네요

0

683

1

match

1

499

1

버튼이 생성되지 않습니다 .

0

288

1

혹시 import 옆에 파일 사이즈 표시 어떻게 하나요?

0

264

1

saga 문제

0

251

1

에러가 발생하는데 이유가뭘까요..?

0

396

2

선생님과 똑같이 했는데 다 rendering 됩니다.

0

210

1

컴포넌트와 컨테이너의 기준

0

325

1

커스텀훅의 개념과 함수차이

1

1205

1

useEffect 실전 활용법(1) 강의에서 질문있습니다.

0

345

1

리덕스, 사가파일들의 관리

0

214

1

useImperativeHandle 질문 입니다.

0

286

1

컴파일 문의드립니다.

0

212

1

React.memo 관련 질문이 있습니다.

0

381

1

Context API vs Redux 사용 빈도

0

218

1