我有一个组件,我在其中获取模拟数据.我正在使用带着悬念的Reaction-Query进行查询.我在跟踪他们的docs美元.这是组件:
export const WorkHistory = () => {
const { caseId } = useContext();
const { api: mockApi } = useMockApi();
const { data: workHistory } = mockApi.getWorkHistory(caseId.toString());
return (
<QueryErrorResetBoundary>
{({ reset }) => (
<ErrorBoundary
fallbackRender={({ error, resetErrorBoundary }) => (
<div>
There was an error! <Button onClick={() => resetErrorBoundary()}>Try again</Button>
<pre style={{ whiteSpace: "normal" }}>{error.message}</pre>
</div>
)}
onReset={reset}
>
<Suspense
fallback={
<div className="flex justify-center">
<Loader size="3xlarge" title="Loading..." />
</div>
}
>
<WorkHistory workHistory={workHistory} />
</Suspense>
</ErrorBoundary>
)}
</QueryErrorResetBoundary>
);
};
这是moockApi中的getWorkHistory
:
const getWorkHistory = (caseId: string) =>
useQuery({
queryKey: `workHistory`,
queryFn: (): Promise<WorkHistoryDto[]> => fakeFetch(JSON.parse(localStorage.getItem(`workHistory`))),
staleTime: Infinity,
suspense: true,
});
const fakeFetch = (result): Promise<any> =>
new Promise((resolve, reject) => {
setTimeout(() => reject(new Error("fail")), 1000);
});
但是,这ErrorBoundary
并没有捕捉到这个错误.我明白了:
Uncaught Error: fail
我到底做错了什么?