⊗jsrtPmRtPR 47 of 47 menu

Rota sem Caminho no React Router

Nesta lição, vamos examinar mais uma propriedade útil da rota sem caminho.

Você sabe que para cada objeto de rota você pode adicionar a propriedade errorElement e como valor definir o elemento que deseja exibir quando ocorrer um erro.

Mas e se tivermos errorElement igual para todas as rotas? Claro, podemos colocar a mesma coisa em cada uma, ou podemos usar uma rota sem caminho, envolvendo as rotas filhas que nos interessam. Então, caso ocorra um erro em uma delas, nossa rota sem caminho irá capturá-los e exibir seu errorElement.

Vamos ao arquivo main.jsx e envolver todas as nossas rotas filhas em uma rota sem caminho, tornando-as filhas dela (por sua vez, esta rota se tornará filha da rota raiz), não vamos esquecer de adicionar também a propriedade errorElement:

const router = createBrowserRouter([ { path: '/', element: <Root />, errorElement: <ErrorPage404 />, loader: rootLoader, action: rootAction, children: [ { errorElement: <ErrorPage404 />, children: [ { index: true, element: <Index /> }, { path: 'products/:productId', element: <Product />, loader: productLoader, }, { path: 'products/:productId/edit', element: <EditProduct />, loader: editProductLoader, action: editAction, }, { path: 'products/:productId/delete', action: deleteAction, }, ], }, ], }, ]);

Como verificar agora o funcionamento deste código? Podemos adicionar uma linha que lança um erro (não se esqueça de removê-la depois, quando terminar de testar). Vamos, por exemplo, adicioná-la como a primeira linha na função action para a rota de exclusão do produto, então, ao tentar excluir um produto, veremos o erro:

export async function action({ params }) { throw new Error('erro'); await deleteProduct(params.productId); return redirect('/'); }

Agora tente excluir algum produto.

Pegue o aplicativo criado por você nas tarefas das lições anteriores. Usando os materiais da lição, envolva suas rotas filhas em uma rota sem caminho com a propriedade errorElement e verifique que isso funciona.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar