이전에 리액트 쿼리에 대해 쓴 적이 있는데 그냥 리액트 쿼리 써봤으니까 개념 쓰고 다시 환기해야지 하고 썼는데
최근에 다시 쓰게 되니 내가 몰랐던 개념이 있었다;
참고
서버에서 넘어오는 데이터 관리를 돕는 라이브러리
const queryClient = new QueryClient()
function App() {
return (
// Provide the client to your App
<QueryClientProvider client={queryClient}>
<Component />
</QueryClientProvider>
)
}
const query = useQuery({ queryKey: ['data-query-key'], queryFn })
// { data, isLoading, isFetching ,,,}
const mutation = useMutation({ // {mutate, mutateAsync, isError, isSuccess ,,, }
mutationFn,
onSuccess,
onError,
})
useQuery와 useMutation
📎 더 자세한 내용은 이전 리액트 쿼리 글
현재 불러와져 있는 데이터를 최신이 아니라고 처리해 다시 최신 데이터를 불러오도록 함
function getData = async ()=>{
// 서버 데이터 불러오는 로직
}
function updateData = async () => {
// 서버 데이터 업데이트 하는 로직
}
const query = useQuery({ queryKey: ['data-query-key'], queryFn: getData })
const mutation = useMutation({
mutationFn: updateData,
onSuccess: async () => {
await queryClient.invalidateQueries({ queryKey: ['data-query-key'] }) // 무효화 코드
},
})
const handlerButtonClick = ()=>{
// 이 로직이 실행된 후 무효화 처리되어
// 컴포넌트가 업데이트 되거나, 데이터를 참조할 때 데이터 새로 불러오기
mutation.mutate({
id: 5,
name: 'soohyun',
})
}
| 무효화 | refetch |
|---|---|
| 필요하면 새로 불러오기 | 호출 즉시 새로 불러오기 |
간만에 제대로 된 글을 올리는 것 같네요