[JS/React-Query] 0. QueryClient

2025. 2. 2. 22:33·🖥️ Front-End/React
목차
  1. 왜 React-Query를 사용해야 하는가
  2. 0. 기본 설정
  3. 0.1 설치
  4. 0.2 QueryClient

관통 프로젝트를 진행할 때 사용했던 Vue.js는 내가 처음 사용해 본 프론트엔드 프레임워크였기 때문에 비교 대상이 없었다.

(리액트는 라이브러리임)

하지만 강사님의 말씀과 구글링을 통해 대부분의 기업이 React를 채택하고 있는 것을 확인, 그래서 방학 때 리액트 공부를 해보기로

 

리액트를 사용하며 처음 든 생각은 '뭐부터 해야하지?'일 정도로, 높은 자유도를 가졌다고 느꼈다.

<template>, <script>, <style>로 정해진 양식이 있는 vue와 달리, jsx파일 내에는 html과 javaScript의 혼용이 가능했음

 

아무튼 이런 리액트의 장점을 극대화 하는 React-Query에 대해 자세히 알아보자

왜 React-Query를 사용해야 하는가

1. 복잡한 캐싱을 대신해줌

  • API 요청 결과를 자동으로 캐싱하여 불필요한 중복 요청 방지
  • 같은 API 요청이 발생하면 캐싱된 데이터를 먼저 반환 후, 자동으로 최신화
  • useState로 상태 관리할 필요 없이, useQuery가 자동으로 처리

2. 자동 데이터 동기화 (리페칭)

  • 데이터가 변경되면 자동으로 최신 데이터를 가져옴
  • 사용자가 화면을 다시 방문하면 자동 리패칭 (새로고침 필요 없음)
  • refetchOnWindowFocus, refetchInterval, staleTime 등의 옵션으로 세부 조정 가능

3. **낙관적 업데이트**

  • 서버 응답을 기다리지 않고 즉시 UI를 업데이트
  • 요청 실패 시, 자동으로 롤백 (이전 상태로 되돌리기)

이번 공통프로젝트는 웹 앱 형식이기에 빠른 반응성이 사용자 경험에 있어서 가장 중요하다고 판단했다.

그러기 위해서는 서버의 응답을 기다리지 않고 변경사항을 반영하는 낙관적 업데이트가 필요하다고 생각했고,

편한 낙관적 업데이트 구현을 위해 리액트 쿼리를 사용했다.

물론, 리액트 쿼리의 다른 기능들도 필요함

 

 

 

0. 기본 설정

0.1 설치

npm i tanstack/react-query
npm i tanstack/react-query-devtools

0.2 QueryClient

import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

// QueryClient 생성
const queryClient = new QueryClient();

// main.jsx에서 app에 QueryClientProvider를 감싸서 모든 컴포넌트에서 사용하도록 설정
createRoot(document.getElementById('root')).render(
    <QueryClientProvider client={queryClient}>
      <App />
    </QueryClientProvider>
);

0.2.1 QueryClient의 속성

  1. staleTime : 데이터가 신선하다고 간주되는 시간
  2. cacheTime : 캐시 데이터를 유지하는 시간
  3. refetchOnMount : 컴포넌트 마운트 시 데이터를 다시 가져올지 여부
  4. refetchOnWindowFocus : 브라우저가 활성화 될 때 데이터를 다시 가져올지 여부
  5. retry : 실패 시 재시도 횟수
  6. retryDelay : 재시도 간격(ms)
  7. enabled : 기본적으로 쿼리를 활성화 할 지 여부

'🖥️ Front-End > React' 카테고리의 다른 글

[JS/React-Query] 1. useQuery  (0) 2025.02.27
[JS/Zustand] 1. Zustand 주요 함수 정리  (0) 2025.01.18
  1. 왜 React-Query를 사용해야 하는가
  2. 0. 기본 설정
  3. 0.1 설치
  4. 0.2 QueryClient
'🖥️ Front-End/React' 카테고리의 다른 글
  • [JS/React-Query] 1. useQuery
  • [JS/Zustand] 1. Zustand 주요 함수 정리
dush
dush
흑인 음악 A&R에서 FE 개발자까지 / Front-End Dev. Since 2024.07
  • dush
    Dushtify
    dush
  • 전체
    오늘
    어제
    • 분류 전체보기 (12)
      • ✏️ Personal (2)
        • SSAFY (2)
        • Portfolio (0)
      • 🖥️ Front-End (4)
        • JavaScript (1)
        • React (3)
      • 💽 CS Knowledge (6)
        • 🌐 Network (5)
        • 💻 CS (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    tanstack-query
    네트워크
    게이트웨이
    javascript
    삼성청년소프트웨어아카데미
    싸피
    CS
    frontend
    TLS
    zustand
    SSAFY
    react-query
    리액트
    우수프로젝트
    react
    Fe
    혼자공부하는네트워크
    2학기공통프로젝트
    프론트엔드
    공통프로젝트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
dush
[JS/React-Query] 0. QueryClient
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.