[JS/React-Query] 1. useQuery

2025. 2. 27. 09:59·🖥️ Front-End/React

공통 발표회까지 드디어 끝 ㅜ

SSAFY 2학기 공통 프로젝트의 주제는 스마트 결혼준비 플래너

같은 데이터(일정, 완료상태)를 한 페이지의 여러 컴포넌트(캘린더, 남은 일정, 다음 일정)에서 공유했음

axios만을 사용해서 데이터를 요청했다면, 매 컴포넌트마다 불필요하게 동일한 요청을 보냈을 것

(store에 저장하기에는 데이터 양이 많아질 수도 있고, 내 기준 변경이 많은 데이터라고 생각하여 store에 저장하지 않았음)

React-Query의 useQuery를 사용시 불필요한 여러 번의 네트워크 전송을 막을 수 있을 것이라고 생각, 일정 호출에서 useQuery를 사용

(신부 혹은 신랑이 배우자의 아이디를 등록하면 일정이 공유되어 같은 데이터를 수정하기에, staleTime은 따로 설정하지 않았음)

 

1.0 useQuery

import { useQuery } from '@tanstack/react-query';
import axios from 'axios';

// axios 통신 함수
const fetchData = async () => {
	const response = await axios.get("URL");
	return response.data;
}

// Query 활용
const QueryPractice = ({ parameter }) => {
	const { data, isLoading } = useQuery({
	
		// 데이터의 고유한 식별 키 ('배열'로 지정해줘야 함)
		// parameter 자리에는 동적 파라미터가 들어갈 수 있음(번호, 객체 등)
		// queryKey가 변경되면 데이터를 리패칭 (ex. 파라미터의 변경)
		queryKey: ["keyName", parameter], 
		
		// Promise를 반환하는 함수
		queryFn: fetchData,
	});
	
	if (isLoading) return <p>Loading...</p>;
	
	return <div>{data.값}</div>
}

 

1.1 useQuery의 속성

 

1. data : ****쿼리 함수(queryFn)가 반환한 데이터

const { data } = useQuery(['practice'], fetchData); console.log(data); // fetchData의 반환 값

 

2. error : 쿼리 실패 시 발생한 에러 객체를 반환

const { error } = useQuery(['practice'], fetchData);
if (error) console.error(error.message);

 

3. isLoading : 데이터가 처음 로드 중인지 여부

4. isFetching : 데이터를 다시 가져오는 중인지 여부

const { isFetching } = useQuery(['practice'], fetchData);
return <p>{isFetching ? 'Refreshing...' : 'Up to date'}</p>;

 

5. isError : 쿼리가 실패했는지 여부

6. isSuccess : 쿼리가 성공했는지 여부

7. status : 쿼리의 상태를 문자열로 반환 (loading, error, success)

if (status === 'loading') return <p>Loading...</p>;
if (status === 'error') return <p>Error!</p>;
if (status === 'success') return <p>Success!</p>;

 

8. refetch : 데이터를 수동으로 다시 가져오는 함수

const { refetch } = useQuery(['practice'], fetchData);
return <button onClick={() => refetch()}>Reload</button>;

 

9. isStale : 오래된 데이터인지 확인
staleTime 설정에 따라 달라짐. 캐시된 데이터를 사용할지 새 데이터를 가져올지 결정

 

외에도 5~6개 더있는데, 사용할 일이 없어 보여서 정리 x

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

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

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바