Política de errores de Endpoint
Endpoint.errorPolicy controla el comportamiento de la caché cuando un fetch es rechazado. Usa el error del rechazo para determinar si debe tratarse como un error 'soft' (suave) o 'hard' (duro).
Soft
Los errores soft siguen mostrando datos válidos si existen. Sin embargo, si no hay datos previos en el store,
se rechazará con error. En este caso useSuspense() lanza el
error para que lo capture el ErrorBoundary o AsyncBoundary más cercano
Hard
Los errores hard siempre se rechazan con error, incluso cuando antes ya había datos disponibles.
Tanto 'hard' como undefined se pueden usar para indicar este estado.
Un error soft sigue mostrando los últimos datos. Los errores hard (y los soft sin nada que mostrar) quedan sin capturar, por lo que la vista previa los muestra con Reset preview para empezar de nuevo.
import { useSuspense } from '@data-client/react'; import { lastUpdated } from './api/lastUpdated'; export default function TimePage({ id }) { const { updatedAt } = useSuspense(lastUpdated, { id }); return ( <div> API time:{' '} <time> {updatedAt.toLocaleString('en-US', { timeStyle: 'long' })} </time> </div> ); }
Política para RestEndpoint
Como los 500 indican un fallo del servidor, queremos usar datos obsoletos
si existen. En cambio, algo como un 4xx indica un 'error del usuario', lo que
significa que el error señala algo sobre el flujo de la aplicación, por ejemplo, que un registro fue eliminado y por eso se obtiene
un 404. Conservar el registro sería incorrecto.
Como este es el comportamiento típico de las APIs REST, es la política por defecto en @data-client/rest
errorPolicy(error) {
return error.status >= 500 ? 'soft' : undefined;
}
undefined es otra forma de especificar un error hard