【问题标题】:onCompleted of useMutation get executed even on error即使出现错误,onCompleted 的 useMutation 也会被执行
【发布时间】:2021-01-26 12:55:26
【问题描述】:

当我使用 useMutation 挂钩并在响应中收到错误时,会触发 onCompleted 方法。这是正常行为吗?

 const [createPerson] = useMutation(CreatePerson, {
   onCompleted: () => {
     console.log('even onError it`s executed')
   }
 })

【问题讨论】:

  • 您能否也发一下createPerson 电话?这不是正常行为。正常行为是触发 onError 之类的东西。
  • 这是我从服务器得到的响应:{data: null, errors: [{message: ''already exists", path: ["/createPerson"], .... }],... }
  • 是的,我对完整的函数调用更感兴趣,因为错误处理可能存在问题。
  • await createPerson({ variables: { input: { name: user.name, email: user.email } }, })
  • 您是否设置了特定的错误策略?

标签: reactjs react-apollo apollo-client


【解决方案1】:

根据我们在聊天中的讨论,我认为您已将 Apollo Provider 的错误策略设置为 ignore

忽略:忽略允许您读取与 GraphQL 错误一起返回的任何数据,但不会保存错误或将它们报告给您的 UI。

这就是 GraphQL 错误被忽略的原因。只有在使用默认策略none 时才会触发它们。

有关错误策略here 和此thread 的更多信息。

【讨论】:

  • 我将其更改为默认错误策略,现在我尝试在 apolloProider 中捕获所有 API 错误,因为我想阻止默认错误页面
  • 如果你想保持你当前的结构,你也可以检查你从onCompleted函数得到的数据属性的状态码,只有在没有错误的情况下才做。但这是一种 hack,必须在任何地方实施。
猜你喜欢
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多