我正在使用 react-query
来获取数据。我写了一个 useQuery 函数。我向它传递了一个 onError 回调函数,用于处理查询失败时发生的错误。
在 onError 函数内,我访问 err 对象的属性消息。问题是,有时我会收到错误Cannot read property message of null
。在访问该属性之前,我打印了 err 对象值,它为 null。 error 函数如何获取 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))
}
});
}
谢谢!
最佳答案
你的 Promise 应该在查询函数中抛出
错误,这样react-query就可以知道存在错误。
关于javascript - useQuery 的 onError 回调函数(react-query)中错误对象为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71677788/