使用 useMutation 可能出现未处理的承诺拒绝警告

Posted

技术标签:

【中文标题】使用 useMutation 可能出现未处理的承诺拒绝警告【英文标题】:Possible unhandled promise rejection warning with useMutation 【发布时间】:2019-12-17 23:35:33 【问题描述】:

当我将 useMutation 与 react native 一起使用时,我收到了一个未处理的承诺拒绝错误。这是产生问题的代码:

const [createUser,  error, loading ] = useMutation(CREATE_USER_MUTATION);

每当我的 graphql 服务器向客户端返回错误时,我都会收到未处理的承诺拒绝错误(下面的屏幕截图)。我可以通过添加这样的错误处理程序来使其消失,但这似乎是一种黑客行为。有什么想法吗?我做错了什么还是阿波罗人应该解决这个问题?

const [createUser,  error, loading ] = useMutation(CREATE_USER_MUTATION, 
  onError: () => 
);

【问题讨论】:

看起来这个答案对发生的事情有详细的解释:***.com/a/59472340/23427。 【参考方案1】:
const [createUser,  data, loading ] = useMutation(CREATE_USER_MUTATION, 
  onError: (err) => 
      setError(err);
  
);

有了这个,我们可以通过加载和正确的错误处理来访问数据。

【讨论】:

【参考方案2】:

您的 createUser 突变是一个承诺,您应该在 try catch 块内或在 apollo-link-error onError 方法内的上层范围内处理错误。

【讨论】:

以上是关于使用 useMutation 可能出现未处理的承诺拒绝警告的主要内容,如果未能解决你的问题,请参考以下文章

带有等待和承诺的 useMutation 问题

如何修复可能的未处理承诺拒绝(id:0)?以及如何修复无法读取未定义的属性“导航”?

未处理的拒绝(错误):帖子不能为空

如何解决该错误>> WARN可能的未处理承诺拒绝(id:0):

可能未处理的承诺拒绝未定义不是一个函数

使用 axios 时可能出现未处理的 Promise 拒绝、网络错误