오늘 리액트를 복습하면서 useEffect
을 아예 까먹고, data를 fetch했는데 계속 state가 변경되는 것을 실시간으로 보았다
(너무 길어서 컷했다...)
여튼 대체 왜 infinite-loop과 같은 상황에 직면했는가?에 대한 궁금증으로 구글에 열심히 쳐봤는데 stackoverflow에서 답변을 찾았다
useEffect
을 사용하지 않으면 이런 방식으로 컴포넌트의 state가 변경된다.data를 fetching 받는다 → 그 과정에서 setData(data)
와 같은 문구로 state를 업데이트 해준다. → state가 업데이트 되어서 '리-랜더링'이 발생한다! → fetch data는 당연히 다시 진행된다 → infinite loop과 같은 현상이 발생된다.
useEffect
을 사용하는 이유는 처음 렌더링 시에만 fetch data를 하기 위해서 였다는 점은 이해했었는데 정확히 무슨 뜻을 의미하는 지는 몰랐던거 같다.useEffect
내에서만 사용하는 것이 바람직하다는 것을 오늘 알게 되었다 🥳