React QueryでAPI呼び出し時のエラーをグローバルにハンドリングする方法についてまとめます。
// provider.tsx
// グローバルのエラーハンドリング
const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: false, // 意図してエラーハンドリングしたいのでfalseにする
},
},
queryCache: new QueryCache({
onError: (error, query) => {
/** グローバルのエラーハンドリングの処理をする */
},
}),
})
export function ReactQueryProvider({ children }: ReactFlowProviderProps) {
return (
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
)
}
const Example = () => {
const { data } = useQuery({
queryKey: ['test'],
queryFn: async () => (await fetch('/api/error-test')).json(),
})
return <>{data}</>
}
QueryClient
のqueryCache.onError
で全体のエラー処理を一元化できます。retry: false
にすることで、意図的にエラーをハンドリングしやすくなります。