개발자
안녕하세요 프론트엔드를 공부하고있는 학생입니다. 제가 데이터 요청시에 항상 리액트 쿼리를 사용해왔었는데 사용하다보니 로그인같이 어플리케이션에서 딱 한번만 사용하게 될때는 굳이 필요없다고 갑자기 느끼게되었습니다! 제가 궁금한건 1. 다들 모든 부분에서 리액트 쿼리를 쓰는지 혹은 필요한 부분에서만 사용하고 나머지는 axios 호출로 처리하는지 2. jwt 기반 로그인과 oauth에서도 리액트 쿼리를 쓰는게 효율적인지 3. axios로 처리할수있는걸 리액트쿼리로 굳이 처리했을때 성능상의 이슈가 약간이라도 있는지? 입니다!
답변 2
인기 답변
1. 프로젝트에 React Query가 이미 사용되고 있다면 굳이 부분적으로 Axios를 사용할 이유는 크게 없을 것 같아요. 두 가지 라이브러리를 혼용하게 되면 새로운 API 호출이 필요할 때마다 어떤 것을 사용해야 할지 고민해야하지 않을까요? 결과적으로 코드 베이스의 일관성을 떨어뜨려 유지 보수가 어려워질 수 있으며 개발 생산성 측면에서도 불리해질 수 있습니다. 하지만 풀스택(full-stack) 프로젝트라면 얘기가 약간 달라질 수 있을 것 같아요. 백엔드 영역의 코드에서 React Query를 사용할 이유는 없겠죠? 따라서 이 경우에는 프런트엔드에서는 React Query를 사용하고, 백엔드에서는 Axios를 사용하는 것이 일반적입니다. 2. JWT나 OAuth 기반 인증/인가에는 일반 API 호출 대비 상대적으로 구현하기가 좀 복잡한 편이에요. 따라서 Axios가 제공하지 않는 React Query의 부가적인 기능들이 어느 정도 도움이 될 수 있을 것 같습니다. 3. Axios로 바로 처리할 수 있는 것들을 React Query를 거쳐서 처리하면 약간의 오버헤드가 발생하겠지만 크게 우려할 정도는 아닐 것 같아요. 오히려 React Query가 제공하는 강력한 상태 관리나 자동 caching/retry 기능이 React 컴포넌트의 데이터 패칭을 효율적으로 만들어 주기 때문에 성능상 이득을 본 사례들이 많습니다. 질문 주신 내용은 아니지만 관련해서 추가로 말씀드리고 싶은 부분은 React Query를 반드시 Axios랑 쓸 필요는 없으며 (특히 순수 웹 프런트엔드 프로젝트라면) 브라우저에서 기본으로 제공하는 `fetch()` 함수와도 궁합이 나쁘지 않습니다. 따라서 Axios의 특정 기능을 사용하는 게 아니라면 대신 fetch 함수를 사용함으로써 애플리케이션이 의존하는 패키지를 하나 줄일 수 있습니다. 여기서 한발 더 나아가 위에서 언급드린 React Query의 좋은 기능이 굳이 필요없는 단순한 프로젝트의 경우에는 그냥 React의 `useEffect()` hook과 `fetch()` 함수를 쓰는 것도 그리 나쁘지 않은 선택일 것입니다. 마찬가지로 불필요한 의존성을 하나 더 줄일 수 있을테니까요.
익명
작성자
2023년 05월 10일
답변감사합니다! 리액트 쿼리로 통일하는게 나을것같네요! 지금 제가 axios 인터셉터로 공통되는 부분에 대한 에러핸들링이나 토큰핸들링을 하고 있는데 이부분은 그대로가고 다른 부분에 대해서만 리액트 쿼리 내의 onSucess나 onError 부분에서 핸들링해도 좋은 방식일까요?
달레
Apollo GraphQL Software Engineer • 2023년 05월 11일
Axios 인터셉터를 활용하여 모든 요청에서 필요한 에러/토큰 핸들링을 구현하고 있다면, 해당 부분은 그대로 유지하면서 React Query의 onSuccess나 onError 함수를 통해서 특정 컴포넌트에만 필요한 구현을 추가하는 것이 좋은 전략으로 보입니다. 그렇게하면 코드의 중복을 최소화할 수 있고 공통적으로 적용되야 하는 에러/토큰 핸들링에 변경이 필요한 경우 Axio 인터센터만 수정해주면 될테니까요.
리액트 쿼리는 데이터 관리와 상태 관리를 용이하게 해주는 라이브러리로 많은 개발자들에게 선호되고 있습니다. 그러나 모든 상황에서 리액트 쿼리를 사용해야 하는 것은 아닙니다. 개발하고 있는 애플리케이션의 특성과 요구사항에 따라 적절하게 선택해야 합니다. 1. 리액트 쿼리와 axios 사용: 리액트 쿼리는 데이터를 가져오고 관리하는 데 유용한 기능을 제공합니다. 그러나 모든 데이터 요청에 리액트 쿼리를 사용할 필요는 없습니다. 간단한 데이터 요청이나 한 번만 사용되는 경우에는 axios와 같은 다른 라이브러리를 사용하여 처리하는 것이 더 간편할 수 있습니다. 2. JWT와 OAuth에서의 리액트 쿼리: 리액트 쿼리는 JWT와 OAuth와 같은 인증 메커니즘과 함께 사용될 수 있습니다. 리액트 쿼리의 Query 컴포넌트나 useQuery 훅을 사용하여 인증된 사용자의 데이터 요청을 처리하는 것은 효율적일 수 있습니다. 그러나 인증 메커니즘에 따라 사용 방법은 달라질 수 있으므로 상황에 맞게 선택해야 합니다. 3. 성능 이슈: 리액트 쿼리는 내부적으로 캐싱 및 데이터 관리 기능을 가지고 있어 성능 측면에서 일부 이점을 가질 수 있습니다. 그러나 성능 이슈는 항상 상황에 따라 다를 수 있으며, 네트워크 요청의 크기와 속도, 서버의 응답 시간 등 여러 요소에 영향을 받습니다. 성능 문제가 심각한 경우에는 쿼리 캐시의 설정을 조정하거나, 캐시를 재사용하는 방식 등의 최적화 작업을 고려할 수 있습니다. 결론적으로, 리액트 쿼리는 데이터 요청과 관리를 편리하게 해주는 강력한 도구입니다. 그러나 모든 상황에서 리액트 쿼리를 사용해야 하는 것은 아니며, 개발하는 애플리케이션의 특성과 요구사항에 따라 적절하게 선택하고 활용해야 합니다.
커리어리 AI 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!