javascript를 이용하여 개발 시 프로젝트의 규모가 이전보다 커짐에 따라 코드량도 증가하게 되었음. 이 때 자바스크립트의 자유도와 유연성이 오히려 단점이 될 것으로 예상. typescipt 사용시 크로스 브라우징 문제 또한 해결 가능하며 브라우저 콘솔창에 발생하는 에러를 최소화하기 위하여 typescript를 사용하게 됨. typescipt 사용시 브라우저에서 에러가 발생하기 전에 개발 과정에서 에러를 발견하고 빠르게 대응할 수 있어져 비교적 짧은 개발 기간동안 효율을 추구할 수 있어질 것이라고 판단. 또한 타입을 지정하여 코드를 보다 읽기 쉽게 만들어줌과 동시에 휴먼에러를 최소화시켜줄 수 있음.
서버 상태 관리를 조금 더 편리하게 하기 위해 도입하게 됨.
에러, 로딩, 페칭 을 한번에 처리할 수 있어서 간편하다고 판단.
리덕스 사용시보다 불필요한 코드 양이 현저하게 줄어들게 됨.
화면 전환할 때마다 서버데이터를 가져오기 때문에 useEffect와 useState의 사용을 줄일 수 있고 실시간 반영이 가능해서 선택하게 됨.
무한스크롤 구현시 tanstack-query에서 기본으로 제공하는 기능을 이용해서 구현이 가능함.(react-intersection-observer 라이브러리 사용 필요성 X)
axios, fetch 중 axios 선택 이유.
fetch는 지원하지 않는 브라우저가 있고, JSON 형식으로 변환해주는 과정이 따로 필요함(JSON.stringify, JSON.parse 등). 그러나 axios는 대부분의 브라우저 지원하고 자동으로 JSON 데이터 형식으로 변환이 가능.
또한 data에 object 형식이 포함되고, 사용하는 법도 편리하여 사용하게 됨. 예를들어 method를 통해 REST API 요청을 조금 더 간결하게 작성할 수 있음.
서비스 특성상 대다수의 요청에 token값을 보내줄 필요성이 있고, 공통적인 에러코드 처리를 위해 인스턴스화 시켜서 사용하는 것으로 수정함.