React Query 的错误类型是什么以及如何处理不同的情况

作者:编程家 分类: typescript 时间:2025-08-28

React Query 是一个用于管理和处理数据的库,它提供了一套简单而强大的工具,使得与服务器端数据交互变得更加容易。然而,在使用 React Query 过程中,我们可能会遇到各种错误。本文将介绍 React Query 的错误类型以及如何处理不同的情况。

React Query 提供了几种常见的错误类型,包括网络错误、超时错误、无效请求错误和未知错误。当发生网络错误时,可以使用 `isError` 属性来判断是否出现错误,并使用 `error` 属性获取错误信息。对于网络错误,可以显示一条错误消息给用户,或者尝试重新发送请求。

jsx

import { useQuery } from 'react-query';

const fetchUser = async () => {

const response = await fetch('/api/user');

if (!response.ok) {

throw new Error('网络错误');

}

return response.json();

};

const UserComponent = () => {

const { data, isLoading, isError, error } = useQuery('user', fetchUser);

if (isLoading) {

return
Loading...
;

}

if (isError) {

return
Error: {error.message}
;

}

return
User: {data.name}
;

};

处理超时错误

有时候,网络请求可能会超时。React Query 提供了一个 `staleTime` 属性,可以用来设置数据过期时间。当数据过期时,React Query 会自动重新发送请求。当请求超时时,可以使用 `isFetching` 属性来判断是否正在重新发送请求。

jsx

import { useQuery } from 'react-query';

const fetchUser = async () => {

const response = await fetch('/api/user', { timeout: 5000 });

if (!response.ok) {

throw new Error('请求超时');

}

return response.json();

};

const UserComponent = () => {

const { data, isLoading, isError, error, isFetching } = useQuery('user', fetchUser, { staleTime: 60000 });

if (isLoading || isFetching) {

return
Loading...
;

}

if (isError) {

return
Error: {error.message}
;

}

return
User: {data.name}
;

};

处理无效请求错误

有时候,我们发送的请求可能是无效的,比如缺少必需的参数或者请求的资源不存在。React Query 提供了一个 `retry` 属性,可以用来设置请求失败后的重试次数。当请求失败时,可以使用 `failureCount` 属性来获取失败次数,并在达到一定次数后显示一条错误消息。

jsx

import { useQuery } from 'react-query';

const fetchUser = async () => {

const response = await fetch('/api/user');

if (!response.ok) {

throw new Error('无效请求');

}

return response.json();

};

const UserComponent = () => {

const { data, isLoading, isError, error, failureCount } = useQuery('user', fetchUser, { retry: 3 });

if (isLoading) {

return
Loading...
;

}

if (isError) {

if (failureCount >= 3) {

return
Error: {error.message}
;

} else {

return
请求失败,请重试...
;

}

}

return
User: {data.name}
;

};

处理未知错误

有时候,我们可能遇到一些未知的错误,无法准确判断错误类型。在这种情况下,可以使用 `isError` 属性来判断是否出现错误,并显示一条通用的错误消息给用户。

jsx

import { useQuery } from 'react-query';

const fetchUser = async () => {

const response = await fetch('/api/user');

if (!response.ok) {

throw new Error('未知错误');

}

return response.json();

};

const UserComponent = () => {

const { data, isLoading, isError, error } = useQuery('user', fetchUser);

if (isLoading) {

return
Loading...
;

}

if (isError) {

return
Error: {error.message}
;

}

return
User: {data.name}
;

};

以上就是处理 React Query 的错误类型以及如何处理不同情况的方法。通过合理的处理错误,我们可以提供更好的用户体验,并且更好地管理和处理数据。