Apollo Client(React):处理意外错误

dip*_*ent 17 javascript apollo reactjs react-apollo apollo-client

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

例如,假设服务器要么:

  • 超时
  • 变得无法到达
  • 出乎意料地失败了

如何在客户端处理?Apollo目前失败,出现以下错误:

未处理(在react-apollo中)错误:GraphQL错误:不能......

我想避免这种情况发生并处理这些错误.我怎么能用React Apollo这样做?


以供参考:

我目前正在使用React-Apollo和Redux.

stu*_*ilo 6

错误在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);
Run Code Online (Sandbox Code Playgroud)

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

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