본문 바로가기
PROGRAMING📚/React📑

[React] React Query 설치하기

별찌루 2024. 1. 19.
728x90
반응형

실시간 데이터가 중요할 때 react-query 를 사용한다

 

서버를 사용하면서 ajax 성공했을 경우와 실패 했을 경우에 다른 html을 보여주고 싶은 경우

몇 초마다 자동으로 ajax 요청을 하고싶거나 실패시 몇 초후에 요청을 재시도 하고싶은 경우

 

실시간 데이터를 계속 가져와야하는 사이트들에서 사용하면 좋다

 

설치 하는 방법

 

npm i @tanstack/react-query

https://tanstack.com/query/v4/docs/react/installation

 

Installation | TanStack Query Docs

React Query is compatible with React v16.8+ and works with ReactDOM and React Native. If you're not using a module bundler or package manager we also have a global ("UMD") build hosted on the unpkg.com CDN. Simply add the following tag to the bottom of you

tanstack.com

 

다음 방법으로 설치해 주면되는데 라이브러리 명이 자주 바뀌는거 같다

2024.01 월 기준 다음 방법으로 설치하니 npm 설치가 되었다

 

index.js 세팅 하기

 

import {
  useQuery,
  useMutation,
  useQueryClient,
  QueryClient,
  QueryClientProvider,
} from '@tanstack/react-query'
const queryClient = new QueryClient();

 

index.js 안에 다음과 같이 선언을 해주고

<App/> 태그를   <QueryClientProvider>   태그로 감싸 주어야한다

 

import {
  useQuery,
  useMutation,
  useQueryClient,
  QueryClient,
  QueryClientProvider,
} from '@tanstack/react-query'

const queryClient = new QueryClient();
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <QueryClientProvider client={queryClient}>
  <React.StrictMode>
    <App />
  </React.StrictMode>
  </QueryClientProvider>
);

 

 

react-query를 이용해서 ajax를 요청하기

 

react-query로 ajax를 요청하기 위해서는 useQuery()라는 함수를 사용해야한다

다음 함수를 사용하기 위해서 '@tanstack/react-query'를 선언을 해주어야한다

 

import {
  useQuery,useQueryClient
} from '@tanstack/react-query'

 

//방법 1
const { data, error, isError } = useQuery({
    queryKey:['myQueryKey2']
  ,queryFn:()=>
   {return axios.get('ajax를 요청 할 사이트주소').then((res=>res.data))}
   ,});
//방법 2
const MyComponent = () => {
  const { data, error, isError } = useQuery({
    queryKey: ["myQueryKey"],
    queryFn: async () => {
      const res = await axios.get(
        "ajax를 요청 할 사이트주소"
      );
      return res.data;
    },
  });
  if (isError) {
    console.error("요청 실패:", error);
    // 에러 처리 로직 작성
  } else if (data) {
    return (
      <div>
        <h2>{data.name}</h2>
        <h3>{data.email}</h3>
      </div>
    );
  }
};

useQuery를 사용하면 좋은점

변수 하나로 성공/실패/로딩중 을 쉽게 파악 가능하게 된다

위의 코드를 에서 보면 result 변수를 사용하는 방법

result.data //성공
result.isLoading //로딩중
result.error  // 실패

import logo from "./logo.svg";
import "./App.css";
import axios from "axios";
import {
  useQuery,
  useQueryClient,
  useQueryErrorResetBoundary,
} from "@tanstack/react-query";

const MyComponent = () => {
  const { data, error, isError } = useQuery({
    queryKey: ["myQueryKey"],
    queryFn: async () => {
      const res = await axios.get(
        "ajax를 요청 할 사이트주소"
      );
      return res.data;
    },
  });
  if (isError) {
    console.error("요청 실패:", error);
    // 에러 처리 로직 작성
  } else if (data) {
    return (
      <div>
        <h2>{data.name}</h2>
        <h3>{data.email}</h3>
      </div>
    );
  }
};
function App() {
  const { data, error, isError } = useQuery({
    queryKey:['myQueryKey2']
  ,queryFn:()=>
   {return axios.get( "ajax를 요청 할 사이트주소").then((res=>res.data))}
   ,});


  return (
    <div className="App">
    {<MyComponent></MyComponent>}
    </div>
  );
}

export default App;

 

728x90
반응형

댓글