더북(TheBook)

15.9.6 QueryClient로 데이터 새로고침하기

리액트 쿼리에서는 useQuery를 사용할 때 입력한 캐시 키를 사용하여 기존 데이터를 만료시키고 새로 불러오도록 처리할 수 있습니다.

우선 WriteScreen에서 useQueryClient Hook을 사용하여 queryClient를 받아오세요. 이 Hook은 이전에 App 컴포넌트에서 QueryClientProvider에 넣었던 queryClient를 사용할 수 있게 해줍니다.

다음으로 게시글 작성에 성공했을 때 queryClient.invalidate(key) 함수를 사용하여 'articles' 캐시 키를 만료시켜보세요.

screens/WriteScreen.tsx

(...)
import {useMutation, useQueryClient} from 'react-query';
import {writeArticle} from '../api/articles';

function WriteScreen() {
  (...)
  const queryClient = useQueryClient();
  const {mutate: write} = useMutation(writeArticle, {
    onSuccess: () => {
      queryClient.invalidateQueries('articles'); // articles 캐시 키를 만료시키기
      navigation.goBack();
    },
  });
  (...)

이제 새 게시글을 다시 작성해보세요. 작성한 게시글이 ArticlesScreen에 나타났나요?

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.