-
[React-query] 리액트 쿼리를 사용해보자!Front-end/React 2022. 3. 29. 19:20
React query는 왜 사용하나?!
리액트 쿼리를 사용하기 전에, 왜 이것이 그렇게 유용할까요? 리액트 쿼리의 장점은 다양한데 그 중 몇 가지를 읊어보자면
1. react-query 자체 캐싱
2. fetch 과정 간소화
3. 다양한 hooks
정도가 있을 것 같습니다. 그럼 리액트 쿼리의 사용 방법을 알아봅시다!
npm install react-query
우선 당연히 패키지를 다운로드 받아야합니다. 그리고 리액트 앱에 queryclientprovider을 제공해줘야 합니다.
Provide queryClient
import { QueryClient, QueryClientProvider } from "react-query"; const queryClient = new QueryClient(); ReactDOM.render( <React.StrictMode> <QueryClientProvider client={queryClient}> <App /> </QueryClientProvider> </React.StrictMode>, document.getElementById("root") );
평범한 provider 패턴입니다. 이렇게 우리는 리액트 모든 앱에 query client를 제공해주었습니다.
리액트 쿼리의 메소드는 다음과 같습니다.
const { isLoading, data } = useQuery<'types'>('유니크한 키', '패치 함수');
이 한 줄로 우리가 그 동안 행해왔던 fetch('어쩌구..').then(response ...) 를 대체할 수 있습니다! 우선 두 가지의 인수를 받습니다. 이 쿼리의 유니크한 키와 또 작성해야 할 패치 함수이죠. 패치 함수를 미리 작성하고 useQuery의 인수로써 전해줍니다.
그리고 isLoading이란 메소드를 제공합니다. useQuery의 모든 데이터가 준비가 되면 false를 리턴합니다. 직접 로딩함수를 작성할 필요가 없게 되는 것이죠!
그리고 패칭된 데이터는 data를 통해 받아 올 수 있습니다.
<h1>{data?.username}</h1>
다음과 같이 말이죠
Fetching function
export const 함수이름 = () => { return fetch("url").then((response) => response.json() ); };
다음과 같은 fetch function을 작성해주고 이 것을 useQuery의 인수로 전해줍니다.
이렇게 우리는 react-query를 사용할 수 있게 되죠. 그리고 이렇게 받아온 정보는 react-query의 자체 캐시 저장소에 저장됩니다. api server에 계속 요청을 보내지 않고 한 번 불러진 데이터는 자동으로 react-query의 캐시 정보를 재사용하게 됩니다.
길었던 데이터 패칭 함수가 이렇게 한 줄로 처리할 수 있다니! 게다가 자체적으로 강력한 캐싱 기능을 자동으로 제공하다니! 이 것을 안 쓸 이유가 있을까요?
또한 reactquerydevtool로 cache data를 시각적으로 확인할 수도 있습니다.
이렇게 리액트 쿼리를 사용하는 기초적인 방법을 알아보았습니다. api data를 fetch 해 보신적이 있으시다면, 이 것이 얼마나 좋은지 알 수 있을 것 같습니다 🥰
도움이 되셨으면 좋겠습니다. 감사합니다.
'Front-end > React' 카테고리의 다른 글
[styled-component] ThemeProvider로 다크모드 구현해보기! (0) 2022.04.13 [Typescript,React] Typescript로 Form,UseState 사용해보기 (2) 2021.12.14 [Styled-component] styled-component 좀 더 똑똑하게 쓰기 (3) 2021.12.13 [React] 리액트 꿀라이브러리 탐방 (1) 2021.12.08