【问题标题】:React useQuery - useMutation onError not catchingReact useQuery - useMutation onError 没有捕捉到
【发布时间】:2022-06-16 01:25:55
【问题描述】:

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

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

我已经花了好几个小时在这个问题上扯头发,我做错了什么?

【问题讨论】:

  • 代码乍一看是正确的。你能展示一个带有问题的代码框重现吗?

标签: axios react-query onerror


【解决方案1】:

我确实遇到了同样的问题,但我似乎找不到解决方案。 onError 回调根本不会触发,突变的状态是 loading 并且永远保持这种状态。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2022-06-22
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多