React useQuery - useMutation onError 未捕获

Mat*_*ňák 7 onerror axios react-query

我使用 Axios 和 react-query 的组合向服务器发出 POST 请求,该服务器可能会返回响应代码 400 和验证错误。

export const axiosDefault = axios.create({
    baseURL: API_LINK,
    headers: {
        'Content-Type': 'application/json'
    },
})

const contactMutation = useMutation(
    (data) => axiosDefault.post('/contact', data),
    {
        onSuccess: (response) => {
            console.log('Success', response)
        },
        onError: (error) => {
           console.log('Error', error)
        }
    }
)
Run Code Online (Sandbox Code Playgroud)

但是,当调用contactMutation.mutate(someData)来自服务器的错误响应时,反应查询库不会处理错误响应,而是向上传播。onSuccess或处理程序都没有onError被调用,isError突变的属性也没有设置。

我花了几个小时为此烦恼,我做错了什么?

小智 2

你好,我也遇到了同样的问题,我通过将 api 函数包装到 try/catch 块并抛出捕获的错误来解决。

(data) => {
    try {
       axiosDefault.post('/contact', data),
    } catch (error) {
       throw error
    }
 }

Run Code Online (Sandbox Code Playgroud)