invalidateQuries란?
내가 겪었던 문제
내가 생각했던 방법
아! 그럼 서버 상태랑 클라이언트 상태를 따로 관리해주어야 되는구나. tanstack query로 호출한 값을 context에 저장해서 전역 관리를 하자!
//HomePage.jsx
const initExpenditures = useLoaderData();
const { data: expenditures } = useQuery({
queryKey: ["expenditures"],
queryFn: () => jsonApi.expenditures.getExpenditures(),
initialData: initExpenditures,
});
const { setInitExpenditures } = useContext(ExpenditureContext);
setInitExpenditures(expenditures);
서버와 상태관리가 너무 어렵다...
해결책
내가 고민했던 문제를 tanstack query에서 해결하기 위한 도구가 있었다.
invalidateQuries
를 활용하여 데이터를 최신 상태로 유지시킬 수 있었다.
const { mutateAsync: addExpenditureJson } = useMutation({
mutationFn: (expenditure) =>
jsonApi.expenditures.addExpenditure(expenditure),
onSuccess: () => {
queryClient.invalidateQueries(["expenditures"]);
},
});
결론