Клиент 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'
}
})