javascript - 在 useQuery 的 onError 回调函数中错误对象为 null(react-query)
我正在使用react-query进行数据获取。我写了一个useQuery函数。我给它传递了一个onError回调函数,用于处理查询失败时发生的错误。
在 onError 函数内部,我访问了 err 对象的 message 属性。问题是,有时我会得到一个错误 Cannot read property message of null。就在访问属性之前,我打印了 err 对象的值,它是 null。错误函数怎么会收到一个为 null 的错误对象呢?
这是 useQuery 的代码:
export function useGetSubject(subjectId: string) {
const guid = useGuid();
useEffect(() => {
return () => store.dispatch(removeBackgroundIfErrorPresent(guid));
}, [])
return useQuery<Subject, Error>(['subject', subjectId], () => {
if (subjectId) {
return serverAccess.subject.viewSubject(subjectId)
} else {
return null
}
}, {
refetchInterval: 60*1000,
enabled: subjectId !== null,
retry: (failureCount: number, error: Error) => {
if (error && error.message === "Subject does not exist") {
return false;
}
if (failureCount >= 3) {
return false;
}
return true;
},
onSuccess: (data) => {
store.dispatch(removeBackgroundErrorIfPresent(guid));
},
onError: (err) => {
console.log("Error value", err) // When the bug occures, it prints null
store.dispatch(addBackgroundError(err.message, guid))
}
});
}
谢谢你!
答案#1
你的 Promise 应该在查询函数中 抛出 错误,这样 react-query 才能理解有错误发生。