Política de erros do Endpoint
Endpoint.errorPolicy controla o comportamento do cache quando um fetch é rejeitado. Ele usa o erro da rejeição para determinar se deve ser tratado como um erro 'soft' (leve) ou 'hard' (grave).
Soft
Erros soft continuam exibindo dados válidos, se existirem. No entanto, se não houver dados anteriores na store,
a promise será rejeitada com error. Nesse caso, useSuspense() lança o
erro para ser capturado pelo ErrorBoundary ou AsyncBoundary mais próximo
Hard
Erros hard sempre rejeitam com error - mesmo quando dados já haviam sido disponibilizados anteriormente.
'hard' | undefined podem ser usados para indicar este estado.
Um erro soft continua exibindo os últimos dados. Erros hard (e erros soft sem nada para exibir) não são capturados, então a pré-visualização os mostra com Reset preview para recomeçar.
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 erros 500 indicam uma falha do servidor, queremos usar dados desatualizados
caso existam. Por outro lado, algo como um 4xx indica 'erro do usuário', o que
significa que o erro indica algo sobre o fluxo da aplicação - por exemplo, quando um registro é excluído, resultando
em 404. Manter o registro seria impreciso.
Como este é o comportamento típico de APIs REST, ele é a política padrão em @data-client/rest
errorPolicy(error) {
return error.status >= 500 ? 'soft' : undefined;
}
undefined é outra forma de especificar um erro hard