npm install react-query
import "./App.css";
import { QueryClient, QueryClientProvider } from "react-query";
import { ReactQueryDevtools } from "react-query/devtools";
const queryClient = new QueryClient();
function App() {
return (
// provide React Query client to App
<QueryClientProvider client={queryClient}>
<div className="App">
<h1>hello</h1>
</div>
<ReactQueryDevtools />
</QueryClientProvider>
);
}
export default App;
쿼리 키를 통하여 통신 로직 데이터를 불러오고, 상태를 관리할 수 있는 Hook이다.
쿼리 키는 중복되면 안된다.
사용 예시
const {data,isError, error, isLoading} = useQuery("posts", fetchPosts);
와 같은 방식으로 사용할 수 있고, data이외에도 다양한 상태를 구조분해 할당을 통해 사용할 수 있다.
isLoading
const {data,isError, error, isLoading} = useQuery("posts", fetchPosts, {staleTime:2000});
const queryClient = useQueryClient();
useEffect(() => {
if (currentPage < maxPostPage) {
const nextPage = currentPage + 1;
queryClient.prefetchQuery(["posts", nextPage], () =>
fetchPosts(nextPage)
);
}
}, [currentPage, queryClient]);
const updateTitleMutation = useMutation(() => updatePost(post.id));
return
(<>
<button onClick={() => updateTitleMutation.mutate(post.id)}>
Update title
</button>
{updateTitleMutation.isLoading && <p>Loading Update title</p>}
{updateTitleMutation.isError && <p>Error Update title</p>}
{updateTitleMutation.isSuccess && <p>Update title</p>}
</>)
유데미 : React Query : React로 서버 상태 관리하기
강의를 듣고 정리한 내용입니다.