javascript - query - Apollo Client(React): Manejo de errores inesperados
react-apollo query (2)
Un error del servidor puede significar que no hay ningún objeto de datos proveniente del servidor, por lo que tampoco hay un mensaje de error disponible.
Supongamos que consulta algunos datos de usuario para que el objeto de resultado sea data.user
. Entonces quieres probar:
if (data.loading !== true && data.user === undefined) {
/* handle the error here */
}
Si no desea ver los mensajes de error, puede agregar opciones a su consulta:
graphql(query, {
options: {
errorPolicy: ''ignore''
}
})
He estado revisando la documentación de Apollo, pero no veo información sobre cómo manejar los errores del servidor en el cliente Apollo.
Por ejemplo, supongamos que el servidor:
- Se acabó el tiempo
- Se vuelve inalcanzable
- Inesperadamente falla
¿Cómo debe manejarse esto en el cliente? Apollo falla actualmente con errores tales como:
Error no manejado (en reaccion-apollo): Error de GraphQL: No se puede ...
Me gustaría evitar que esto suceda y manejar estos errores. ¿Cómo puedo hacerlo usando React Apollo?
Para referencia:
Actualmente estoy usando React-Apollo y Redux.
Los errores se transmiten a lo largo del campo de error
en sus componentes de componentes: 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);
Ese mensaje se imprime si detectamos que hubo un error y no se pudo acceder al campo de error
en el componente.
Podría escribir un componente de orden superior para manejar los errores de una manera genérica, de modo que pueda envolver todos sus componentes con eso.