Limitador de Erros
Visão Geral
Captura e tratamento de erro é um conceito poderoso disponível desde a versão 1.54.0, que permite lidar com erros que ocorrem durante a renderização de componentes. Eles permitem que você lide elegantemente com erros e evite que toda a aplicação seja interrompida devido a um erro não tratado.
Na deco, criar um limite de erro é tão simples como exportar uma função de
componente chamada ErrorFallback
que recebe um objeto com uma propriedade:
error
. A propriedade error
armazena o objeto de erro que foi lançado pelo
componente.
Os pré-requisitos para fazer o seu componente funcionar com tratamento de erro são ter as seguintes dependências nas versões iguais ou superiores às abaixo:
{
"imports": {
"deco/": "https://denopkg.com/deco-cx/deco@1.54.0/",
"$fresh/": "https://denopkg.com/deco-cx/fresh@1.3.2/",
"preact": "https://esm.sh/preact@10.16.0",
"preact/": "https://esm.sh/preact@10.16.0/",
"preact-render-to-string": "https://esm.sh/*preact-render-to-string@6.2.0",
"@preact/signals": "https://esm.sh/*@preact/signals@1.1.3",
"@preact/signals-core": "https://esm.sh/@preact/signals-core@1.3.0"
}
}
Exemplo: Criando um Limitador de Exceção
Para criar um limite de erro, você pode seguir estes passos:
- Escolha a Seção selecionada (por exemplo,
ProductShelf.tsx
) - Exporte uma função chamada
ErrorFallback
, a função deve receber um objeto com uma propriedade:error
.
// ProductShelf.tsx
export interface Props {
myProp: string;
}
export function ErrorFallback({ error }: { error?: Error }) {
// Sua lógica de tratamento de erro vai aqui
// Você pode exibir uma mensagem de erro, registrar o erro ou renderizar uma interface de substituição
return (
<div>
<h2>Oops! Algo deu errado.</h2>
<p>{error.message}</p>
</div>
);
}
export default function ProductShelf(props: Props) {
...
}
Se ocorrer um erro durante a renderização de ProductShelf
, o componente
ErrorFallback
sera renderizado no lugar de ProductShelf
Lembre-se de usar os limites de erro com cuidado e envolver apenas os
componentes propensos a erros. Usar os limites de erro de forma eficaz pode
melhorar muito a estabilidade e a experiência do usuário em suas aplicações.
Caso nao haja nenhum ErrorFallback
definido, um fallback padrao será utilizado