TanStackQuery 공식 홈페이지 따라하기
TanStackQuery (5) - Query Functions
vitamin3000
2025. 1. 30. 18:12
쿼리 함수는 문자 그대로 약속을 반환하는 모든 함수가 될 수 있다.
반환되는 약속은 데이터를 해결하거나 오류를 throw 해야한다.
핸들링 및 throw 오류
TanStack Query가 쿼리에 오류가 발생했는지 확인하려면 쿼리 함수가 거부된 Promise를 throw하거나 반환해야 한다.
쿼리 함수에서 throw된 모든 오류는 쿼리의 오류 상태에 지속된다.
const { error } = useQuery({
queryKey: ['todos', todoId],
queryFn : async () => {
if (somethingGoesWrong) {
throw new Error ("어랍숑?")
}
if (somethingElsetGoesWrong) {
return Promise.reject(new Error ("Oh no.."))
}
return data
},
})
기본적으로 throw 하지 않는 fetch 및 기타 클라이언트와 함께 사용
axios나 graphql-requery와 같은 대부분 유틸리티는 실패한 HTTP 호출에 대해 자동으로 오류를 발생시키지만
fetch와 같은 일부 유틸리티는 기본적으로 오류를 발생하지 않으므로 직접 발생시켜야 한다
useQuery({
queryKey: ['todos', todoId],
queryFn: async () => {
const response = await fetch('/todos/' + todoId)
if (!response.ok) {
throw new Error ('Network response was not ok')
}
return response.json()
}
})
쿼리 함수 변수
항상 필요한 것은 아니지만 가져오는 데이터를 고유하게 식별하기 위함
function fetchTodoList({ queryKey }) {
const [_key, { status, page }] = queryKey
return new Promise()
}