Клиент Apollo (React): обработка непредвиденных ошибок

Я просматривал документацию Apollo, но я не вижу информации о том, как обращаться с ошибками сервера в клиенте Apollo.

например, предположим, что сервер:

  • времени
  • недоступен
  • неожиданно не

Как это должно быть обработано в клиенте? Apollo в настоящее время терпит неудачу с такими ошибками, как:

необработанный (в react-apollo) Ошибка: Ошибка GraphQL: не удается ...

Я хотел бы избежать этого и обработки этих ошибок. Как я могу сделать это с помощью React Apollo?


Для справки:

в настоящее время я использую React-Apollo и Redux.

2 ответов


ошибки передаются в 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 поле не было доступно в компоненте.

вы можете написать компонент более высокого порядка для обработки ошибок в общем виде, так что вы можете обернуть все свои компоненты с этим.


A ошибка сервера может означать, что нет объекта данных, поступающих с сервера, поэтому также нет сообщения об ошибке.

предположим, вы запрашиваете некоторые пользовательские данные, чтобы объект результата был data.user. Затем вы хотите проверить:

if (data.loading !== true && data.user === undefined) {
   /* handle the error here */
}

Если вы не хотите, чтобы увидеть сообщения об ошибках, вы можете добавить параметры в запрос:

graphql(query, {
  options: {
    errorPolicy: 'ignore'
  }
})