处理useMutation钩子中错误的最佳方法是啥[重复]

Posted

技术标签:

【中文标题】处理useMutation钩子中错误的最佳方法是啥[重复]【英文标题】:what is the best way to handle error in useMutation hook [duplicate]处理useMutation钩子中错误的最佳方法是什么[重复] 【发布时间】:2020-08-30 15:17:55 【问题描述】:

我正在使用 graphql 来完成我的工作,在我的一个用例中,我正在使用 useMutation hook 进行突变,例如添加、插入或删除。

所以这里我有输入字段和按钮,所以点击我想将数据保存在工作正常的数据库中,

我的主要观点是处理react-apollo-graphql in useMutation 中的错误的最佳方法是什么

目前我正在使用 Promise 处理错误,但我知道这不是最好的方法

我正在做的是

    const [createDep, loading,error] = useMutation(ADD_DEPARTMENTS,  // here this error I want to do something here ton handle error and loading
    update(_,result)
   console.log(result)
    
  )
const submitDepartment = (e) =>  
    let dept_name = e.department
    console.log(dept_name)
    createDep(
      variables:  dept_name ,
    ).catch((res) =>    // I do not think This is the right way to do
      const errors = res.graphQLErrors.map((error) => 
        console.log(error.message);
      );

    );
  ;

【问题讨论】:

您可以捕获错误或提供onError 回调。有关详细信息,请参阅链接的帖子。 【参考方案1】:

我只是将它包装在一个 try/catch 范围内:

const [createDep] = useMutation(ADD_DEPARTMENTS,      
  update(_,result)
    console.log(result)
  
)

const submitDepartment = async (e) =>  
  let dept_name = e.department
  try 
    await createDep(variables: dept_name)
   catch (err) 
    // handle error here
  
;

【讨论】:

hey react apollo graphql 给出了这个error 对象,那么这个有什么用呢? 我编辑了答案,我不使用突变的 return loading, error 但通常是返回 promise 并包装整个 try/catch。

以上是关于处理useMutation钩子中错误的最佳方法是啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 React 钩子处理 graphQL 突变错误(useMutation + Apollo-client)

错误:“突变”类型上的未知字段“讨论”。使用 Relay 和 React `useMutation` 钩子

如何在 withFormik() 形式中使用 useMutation 钩子

如何重置 Apollo 客户端的 useMutation 钩子

以与 `useMutation` 失败相同的方式使用 `useQuery` 钩子

在 iOS 中处理 https 错误代码的最佳方法是啥?