我想设置我的查询,使其无限重试,除非它收到特定类型的错误,例如 404 或 401。我找不到使用 React Query API 的方法,但我想我可以提供一个回调设置enabled
为 false 到我的 fetch 包装器,如下所示:
async function fetchItems(onError) {
return fetch("https://pokeapi.co/api/v2/404").then(async (response) => {
if (response.ok) {
return await response.json();
} else {
if (response.status === 404) onError();
throw new Error(response.statusText);
}
});
}
export default function App() {
const [isEnabled, setIsEnabled] = useState(true);
const { data } = useQuery(
"data",
() => fetchItems(() => setIsEnabled(false)),
{
enabled: isEnabled,
retry: true
}
);
return <div>{data}</div>;
}
但是,这不起作用,尽管enabled
在第一次调用后立即设置为 false,它仍会继续重试。我做错了什么,它是否按设计工作或者我应该提交错误报告?