React-Query
서버의 상태를 불러오고, 캐싱하며, 지속적으로 동기화하고 업데이트 하는 작업을 도와주는 라이브러리
개요
세팅
$ npm i @tanstack/react-query$ npm i -D @tanstack/react-query-devtools
import React from 'react';import { QueryClient, QueryClientProvider } from 'react-query';import { ReactQueryDevtools } from 'react-query/devtools';import App from './App';const queryClient = new QueryClient();root.render(<QueryClientProvider client={queryClient}><App /><ReactQueryDevtools /></QueryClientProvider>);
useQuery
const getMentors = async () => {try {const res = await api.get('/main');return res.data;} catch (err) {console.error(err);}};const { data, isLoading, isError } = useQuery('mentors', getMentors, {refetchOnWindowFocus: false,});if (isLoading || isError) return <Loading />;return (<div>{filteredData.map((el) => (<MentorCard el={el} />))}</div>);
useMutation
const { mutate } = useMutation((mentor) => axios.post('/mentors', { mentor }),{onSuccess: () => queryClient.invalidateQueries('mentors'),},);...<buttononClick={() =>mutate({id: Date.now(),name: '장경은',})}>장경은</button>