【发布时间】:2021-11-09 17:42:47
【问题描述】:
目前在 React 查询中,我正在调用 api,当出现错误时,它会显示错误,但是,当我更改状态对象以进行新调用时,它会显示加载数据但不会隐藏错误信息?我创建了一个示例,我添加了一个按钮,该按钮会给出错误消息,即
stackblitz 示例:https://stackblitz.com/edit/react-ts-6wugxj?file=index.tsx
import React from 'react';
import { render } from 'react-dom';
import { useQuery } from 'react-query';
import axios from 'axios';
import { QueryClient, QueryClientProvider } from 'react-query';
const App: React.FunctionComponent = () => {
const queryKey = 'getData';
const [number, setNumber] = React.useState(1)
const getData = async (): Promise<any> => {
await new Promise((resolve) => setTimeout(resolve, 1000));
const response = await axios
.get(`https://jsonplaceholder.typicode.com/posts/${number}`)
.then((res) => res.data);
return response;
};
const {
data: result,
isFetching,
status,
error,
refetch,
}: any = useQuery(queryKey, getData, {
refetchOnWindowFocus: false,
staleTime: 0,
cacheTime: 0,
refetchInterval: 0,
});
React.useEffect(() => {
refetch();
}, [number, refetch]);
return (
<div className="Container">
<button onClick={refetch}>Refetch query</button>
<button onClick={() => setNumber(() => 1)}>Get 1</button>
<button onClick={() => setNumber(() => 2)}>Get 2</button>
<button onClick={() => setNumber(() => 3)}>Get 3</button>
<button onClick={() => setNumber(() => 99999)}>Get 99999</button>
{status === 'error' && <div className="mt-5">{error.message}</div>}
{isFetching ? (
<div className="mt-5">Loading data ...</div>
) : (
<div>
{status === 'success' && (
<div>
{/* {result?.map((inner: any, index: number) => {
return <li key={index}>{inner.title}</li>;
})} */}
<p><strong>id:</strong> {result?.id}</p>
<p>{result?.title}</p>
</div>
)}
</div>
)}
</div>
);
};
const queryClient = new QueryClient();
render(
<QueryClientProvider client={queryClient}>
<App />
</QueryClientProvider>,
document.getElementById('root')
);
【问题讨论】:
标签: javascript reactjs react-query