최근 기존 express server 를 통해 SSR 로 구현된 legacy code 를
react-router-dom 을 사용해 CSR 로 변경하는 업무를 맡게 되었다.
업무를 진행하기 위해 기존에 express 를 통해 해주던 일을 clinet 로 넘겨야 했다.
legacy code 에서 redux state 를 초기화 하여 client 에 보내고 client 에서
server 를 통해 받은 store 를 이용해서 store 를 다시 초기화 해서 사용하고 있었다.
그래서 일단 server 에서 redux 초기화 하는 부분을 list-up 하면서 client 로 이동시켰다.
이후 개발 편의성을 위해 기존 webpack watch mode 를 webpack dev server 로 변경하여 test 를 해보았는데
재귀함수 처럼 계속 처음 화면을 다시 출력하는 현상을 확인했다.
일단 react 문제인지 확인해 보았는데 아얘 resource 를 다시 불러오는 것으로 보아 용의선상에서 제외했다.
이후 webpack-dev-server 문제인지 확인해 보았지만 별다른 혐의점을 찾을 수 없었다.
전회사에서 비슷한 ? 실수를 한경험이 있어 혹시 location API 가 어딘가 걸려있어 url 이 / 로 이동하는 게 아닐 까 생각했다.
찾아보니 역시나 try - catch 의 catch 에서 window.location.reload 를 호출하고 있었다.
전회사에서도 데이터를 받는데 실패하면 catch 에서 url 주소를 직접 변경하는 부분을 넣었다가 큰일이 난 경우가 있었는데
legacy-code 에서 비슷한 부분을 발견했다..
결론적으로 catch 에서 url 를 변경한다던지 하면 무한 재로딩이 발생할 경우가 있어 catch 문에서 location 을 조작하는 것은 안하는게 맞는 것 같다.
code 넣은 사람이야 알지 모르는 사람입장에서는 resource 가 reload 되면 debug 하기 굉장히 힘들어진다..
팀원들과 내용공유해서 비슷한 부분이 있으면 무조건 빼야 겠다.