网站搜索

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 才能理解有错误发生。