본문 바로가기
프로젝트/코드스테이츠 - 4주프로젝트

경고 : setTimeout으로 인한 메모리누수 => 페이지 unmount될때 setTimeout 꺼주기

by 안뇽! 2021. 12. 9.
반응형

아래의 NextBtn 함수가 5초마다 실행되는데, 페이지를 옮긴후에도 setTimeout이 실행되어 메모리 누수가 발생한다는 내용이다.

그럼 페이지를 옮겼을때 setTimeout을 꺼주면 된다.

나의 경우에서는 다음과 같이했다.

 

 return () => {
      mounted = false;
    };
    
이 부분은 오늘 처음보는 형식인데, unmount될 때 실행되는 함수인것같다.

=> 아닌걸로 판명, 공식문서에 따르면 모든리렌더링시마다 실행된다.(의존성배열넣으면 의존성배열이 변할때마다)
https://ko.reactjs.org/docs/hooks-effect.html#explanation-why-effects-run-on-each-update

 

 

 

참고자료 : 

 

https://norwayy.tistory.com/370?category=978603 

 

이슈 해결 - Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in

Goal  - 컴포넌트가 unmount된 후 해당 컴포넌트의 state를 업데이트했을 때 발생하는 이슈 공유  - 해당 이슈 해결 과정 공유 리엑트에서 비동기 동작은 정말 흔하다. 서버에 데이터를 요청하거나, s

norwayy.tistory.com

위의 글보다 위의 글에서 소개하는 다음글이 영어지만 코드가 일반적인 상황에서 적용할 수 있게 적혀있어 도움이 되었다.

 

https://www.benmvp.com/blog/handling-async-react-component-effects-after-unmount/

 

Handling async React component effects after unmount | Ben Ilegbodu

Four strategies for ensuring that React components don't update state after they've been unmounted

www.benmvp.com

 

반응형