我一直在查看Apollo文档,但我没有看到有关如何在Apollo客户端中处理服务器错误的信息。
例如,假设服务器有以下两种情况:
在客户端应该如何处理这个问题?Apollo当前失败,错误如下:
未处理(在react-apollo中)错误: GraphQL错误:无法...
我希望避免这种情况发生并处理这些错误。我如何使用React Apollo做到这一点?
参考:
我目前使用的是React-Apollo和Redux。
发布于 2017-05-03 01:53:03
错误会在组件属性的error
字段中传递:http://dev.apollodata.com/react/api-queries.html#graphql-query-data-error
function MyComponent({ data }) {
if (data.error) {
return <div>Error!</div>;
} else {
// ...
}
}
export default graphql(gql`query { ... }`)(MyComponent);
如果我们检测到存在错误,并且组件中未访问error
字段,则会打印该消息。
您可以编写一个高阶组件来以通用的方式处理错误,这样您就可以用它包装所有的组件。
发布于 2018-02-28 19:34:34
服务器错误可能意味着没有来自服务器的数据对象,因此也没有可用的错误消息。
假设您查询了一些用户数据,因此结果对象将为data.user
。然后,您想要测试:
if (data.loading !== true && data.user === undefined) {
/* handle the error here */
}
如果不想看到错误消息,可以在查询中添加选项:
graphql(query, {
options: {
errorPolicy: 'ignore'
}
})
https://stackoverflow.com/questions/43646789
复制相似问题