首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Apollo客户端(React):处理意外错误

Apollo客户端(React):处理意外错误
EN

Stack Overflow用户
提问于 2017-04-27 08:42:54
回答 2查看 2.7K关注 0票数 17

我一直在查看Apollo文档,但我没有看到有关如何在Apollo客户端中处理服务器错误的信息。

例如,假设服务器有以下两种情况:

  • 超时
  • 变得无法访问
  • 意外失败

在客户端应该如何处理这个问题?Apollo当前失败,错误如下:

未处理(在react-apollo中)错误: GraphQL错误:无法...

我希望避免这种情况发生并处理这些错误。我如何使用React Apollo做到这一点?

参考

我目前使用的是React-Apollo和Redux。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-03 01:53:03

错误会在组件属性的error字段中传递:http://dev.apollodata.com/react/api-queries.html#graphql-query-data-error

代码语言:javascript
复制
function MyComponent({ data }) {
  if (data.error) {
    return <div>Error!</div>;
  } else {
    // ...
  }
}

export default graphql(gql`query { ... }`)(MyComponent);

如果我们检测到存在错误,并且组件中未访问error字段,则会打印该消息。

您可以编写一个高阶组件来以通用的方式处理错误,这样您就可以用它包装所有的组件。

票数 6
EN

Stack Overflow用户

发布于 2018-02-28 19:34:34

服务器错误可能意味着没有来自服务器的数据对象,因此也没有可用的错误消息。

假设您查询了一些用户数据,因此结果对象将为data.user。然后,您想要测试:

代码语言:javascript
复制
if (data.loading !== true && data.user === undefined) {
   /* handle the error here */
}

如果不想看到错误消息,可以在查询中添加选项:

代码语言:javascript
复制
graphql(query, {
  options: {
    errorPolicy: 'ignore'
  }
})
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43646789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档