useQuery(기초)

jini.choi·2024년 10월 28일

useQuery

목록 보기
1/4
  • 첫번째 인자: 이 쿼리를 식별하는 고유 키 (캐시에서 데이터를 관리하는 기준이 됨)

  • 두번째 인자: 데이터를 가져오는 비동기 함수 (콜백 함수)

  • 캐시 는 react-query가 데이터를 저장하고 관리하는 메모리 영역(react-query의 캐시는 브라우저 메모리 안에 저장)

  • 캐시는 메모리 기반으로 동작하며, useQuery로 동일한 쿼리를 다시 요청할 때, 캐시에 있는 데이터를 우선적으로 사용하고, 필요하면 서버에서 새 데이터를 가져온다.useStatedata를 담았던 이전 방식과 달리 react-query는 컴포넌트에서 데이터를 가져오는것을 단순화해주고, sate변수를 따로 관리할 필요가 없어진다.

  • useQuery 는 isError 플래그도 반환하고 요청에서 발생한 error도 반환한다.

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

const featchSuperHeroes = async () => {
  const res = await fetch("http://localhost:4000/superheroes");
  const result = await res.json();
  return result;
};

export const RQSuperHeroesPage = () => {
  const { isLoading, data, isError, error } = useQuery({
    queryKey: ["super-heroes"],
    queryFn: featchSuperHeroes,
  });

  if (isLoading) {
    return <h2>Loading...</h2>;
  }

  if (isError) {
    return <h2>{error.message}</h2>;
  }

  return (
    <>
      <h2>React Query Super Heroes Page</h2>
      {data?.map((hero) => {
        return <div key={hero.id}>{hero.name}</div>;
      })}
    </>
  );
};

https://www.youtube.com/playlist?list=PLC3y8-rFHvwjTELCrPrcZlo6blLBUspd2

profile
개발짜🏃‍♀️

0개의 댓글