TanStack Query는 React, Vue, Solid 등 다양한 프론트엔드 프레임워크에서 사용할 수 있는 데이터 페칭, 캐싱, 동기화 및 업데이트 관리를 위한 라이브러리입니다. TanStack Query는 주로 비동기 데이터 관리를 간편하게 해주는 도구로, 서버 상태 관리(server state management)에 특화되어 있습니다.
import {
QueryClient,
QueryClientProvider,
useQuery,
} from '@tanstack/react-query'
const queryClient = new QueryClient()
export default function App() {
return (
<QueryClientProvider client={queryClient}>
<Example />
</QueryClientProvider>
)
}
function Example() {
const { isPending, error, data } = useQuery({
queryKey: ['repoData'],
queryFn: () =>
fetch('<https://api.github.com/repos/TanStack/query>').then((res) =>
res.json(),
),
})
if (isPending) return 'Loading...'
if (error) return 'An error has occurred: ' + error.message
return (
<div>
<h1>{data.name}</h1>
<p>{data.description}</p>
<strong>👀 {data.subscribers_count}</strong>{' '}
<strong>✨ {data.stargazers_count}</strong>{' '}
<strong>🍴 {data.forks_count}</strong>
</div>
)
}
react-query를 사용하기 위해서는 QueryClientProvider
를 최상단에서 감싸주고 Query의 상태와 동작을 전역적으로 관리하는 객체인 QueryClient
인스턴스를 client props로 넣어 애플리케이션에 연결해야 한다.
query
: 비동기 데이터 요청을 나타내는 객체useQuery
훅을 사용하여 데이터 페칭과 캐싱을 처리합니다.const { isPending, error, data } = useQuery({
queryKey: ['repoData'],
queryFn: () =>
fetch('<https://api.github.com/repos/TanStack/query>').then((res) =>
res.json(),
),
})
queryKey
→ 쿼리에 대한 고유 키
위의 코드처럼 간단한 경우에는 배열에 상수 값만으로 키를 사용할 수 있다.