javascript - useQuery 的 onError 回调函数(react-query)中错误对象为 null

标签 javascript typescript error-handling react-query

我正在使用 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/

相关文章:

php - 禁用PHP中的错误

java - java处理http错误429?

JavaScript,使用函数更改 HTML <p> 标记中显示的文本

angular - ESlint 和 Angular 13 : Unable to turn off typescript-eslint/typedef

Angular 2 测试用例显示没有 NgControl 的提供者

javascript - 使用 observable - angular2 向所有订阅者元素发送数据

python - 如果 try 语句在 python 中成功,则运行代码

javascript - 每行等高列

javascript - MongoDB 对填充字段的查询

javascript - 如何使用 Html 和 JavaScript 创建验证码?