계속 지도를 클릭해대면 지도가 하얘진다.
처음에는 계속 axios를 찾았다.
모든 axios에 로딩신호를 할당하고, setTimeout()
함수도 넣어보고 별별짓 다해봤지만 해결되지 않았다.
길을 잘못들었다는 생각이 들어 코드를 한줄한줄 자세히 바라보았다.
placeList... 이놈이 만약 초기화되었다면??? 그동안 useState
, useRecoilState
에 뒷통수를 많이 맞은 나는
이녀석을 보자마자 의심을 하지 않을 수 없었다.
console.log를 찍어보니 역시나 빈배열이었다.
초기화되는 짧은 순간에 온클릭이벤트가 발생한다면 반복문이 빈배열을 순회하게 되는 것이었다!
빈배열을 순회하게 되면서 마커에 할당할 좌표가 없고, 하얀지도가 렌더링되는 것이다.
위 코드처럼 로딩인디케이터의 조건을 recoil selector
말고도 placeList.length===0
일때를 추가해주니 클릭이
로딩인디케이터에 차단되어 더이상 버그가 발생하지 않았다.
로딩인디케이터를 사용할때 비동기통신만 신경썼었는데, 상황에 따라 예상치못한 sideEffect 가 발생할 수 있다는 교훈을 얻게 되었다.
더불어 지도 옆에 관광지 카드들을 나열한 컴퍼넌트인 placeCards.js에서 계속 메모리누수 경고가 뜨는 버그도 자연스레 해결되었다.
useEffect의 cleanup함수를 다 설정해봐도 되질 않아서, 분명히 하얀지도뜨는 버그와 연관이 있다고 생각했는데 역시 맞았다.
지도에서 빈배열을 순회하면서 진행이 끊겨버렸지만 placeCards.js에서의 배열은 정리되지 않은 상태로 남아있어서 메모리 누수 경고가 뜨는 것이었다.
=>의존성배열 바꿔서 해결했음. 하지만 임시방편임 placeList로 인해 발생하는 메모리누수를 어떻게 해결해야할지 모르겠음
=>클린업함수에서 state를 초기화 시켰음. 우선 메모리누수가 발생하진 않는데 또 언제발생할지 모르겠다.. 하..
* 사진에도 로딩 추가해야겠다..
'프로젝트 > 코드스테이츠 - 4주프로젝트' 카테고리의 다른 글
위치기반시스템 flow (0) | 2022.01.03 |
---|---|
리팩토링 : httpOnly를 true로 설정하고 로긴상태 유지하는법 알아냄 (0) | 2022.01.01 |
useMemo와 React.memo를 이용한 최적화 (0) | 2021.12.19 |
카카오맵에서 클릭한 마커의 정보를 담은 모달창 켜기 (0) | 2021.12.18 |
토큰이 만료되었을시 로그아웃을 유도하는 모달창만들기 (0) | 2021.12.17 |