inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

웹 게임을 만들며 배우는 React

6-2. setTimeout 여러 번 사용하기

setTimeout()에 대해서 질문드립니다!

해결된 질문

326

Hephaestus

작성한 질문수 10

0

안녕하세요 제로초님! 항상 좋은 강의해 주셔서 감사드립니다! 다름이 아니라 setTimout() 오류에 대해서 제가 이해한 내용을 적어 보았는데 제대로 이해했는지 확인을 부탁드리고자 질문을 작성하게 됐습니다!

 

<이해한 내용>

setTimeout()을 제거하지 않았을 때 발생하는 에러: (Lotto 컴포넌트의 부모 컴포넌트가 존재한다고 가정)  부모 컴포넌트가 Lotto를 없앴을 때 화면상에서 Lotto 컴포넌트는 사라졌지만 코드상에서는 여전히 존재하기 때문에 부모 컴포넌트가 렌더링 될 때마다 자식 컴포넌트인 Lotto 또한 렌더링 된다. 이로 인해 Lotto 컴포넌트의 componentDidMount()에 있는 setTimeout()이 계속 실행되어 메모리 누수가 발생하거나 의도하지 않은 에러가 발생하게 된다. 따라서 오류를 사전에 방지하기 위해 setTimeout()을 사용했을 경우 compnentWillUnmount()에서 항상 제거해 주어야 한다.

react

답변 1

1

제로초(조현영)

아뇨, 부모 컴포넌트가 사라지면 자식 컴포넌트도 사라지는 게 맞습니다. 렌더링도 되지 않고요. 다만 componentDidMount에서 setTimeout 했던 내용은 사라지지 않아서 컴포넌트가 사라진 후에도 한 번 실행이 됩니다(setTimeout은 한 번만 실행됩니다, setInterval이 주기적으로 계속 실행되고요).

그 한 번이 실행될 때 오류가 발생할 수 있어서 componentWillUnmount에서 제거해줘야 합니다.

0

Hephaestus

아하! 이해했습니다! 답변 감사드립니다 : )

npm run dev 실행 시 포트가 안뜨는 문제

0

211

2

timeouts.current를 useEffect 의 input값으로 넣었을때

0

89

2

렌더링 테스트 코드 (Hooks)

0

81

1

Cannot find package 'react-refesh' 이런 에러 뜨시는 분들 보세요.

0

155

1

해당 에러 뜨는 분들 보세요. "Uncaught TypeError: ReactDom.createRoot is not a function"

1

193

1

강사님 레포지토리에서 코드 복사 시 master 브랜치 말고 react18 브랜치꺼 복붙하세요ㅠㅠ

0

99

1

useMemo와 useCallback 사용 시기

0

209

2

onRightClickTd가 작동을 하지 않습니다.

0

228

1

action.type 불러오는 방식

0

222

2

onClickRedo 질문

0

172

1

const Try = require(./Try) 빨간줄

0

249

1

npx webpack 실행시

0

316

1

지뢰찾기 강좌에서 빈칸들 한번에 열기 파트에서 여쭤보고싶은부분이 있어서 글 올립니다.

0

236

1

강좌에서 다루지 않은 기능들은 어떻게 학습하면 좋을까요?

0

312

1

react devtool이 enable 않됩니다.

0

533

2

React 랜더링이 되지 않습니다.

0

415

2

비동기로 동작하는 setState에 대해서

0

334

1

npm run dev 할 때 에러발생

0

480

2

memo, PureComponenet, shouldComponentUpdate 관련 질문

0

207

1

devMiddleware의 필요성

0

354

1

리액트에서 화살표 함수를 사용해야하는 이유

0

938

2

path.join관련질문

0

283

2

2-9. 웹팩 데브 서버와 핫 리로딩 설치과정 시 에러

0

377

1

next.js 에서 이와 비슷한 예제를 돌리고있는데 react랑 달라서 질문 드립니

1

494

4