Breadcrumbs são importantes no desenvolvimento de páginas da web, pois fornecem aos usuários uma maneira de acompanhar sua localização atual em nossa página da web e também auxiliam na navegação em nossa página da web.
Neste guia, implementaremos breadcrumbs no React usando react-router v6 e Bootstrap.
React-router v6 é uma biblioteca de roteamento usada em React e React Native para navegar em uma página da web ou aplicativo da web.
Nossa implementação usa Typescript, mas também pode ser facilmente usada para um projeto baseado em Javascript.
Primeiro, vamos instalar o react-router-dom em nosso projeto se ele ainda não tiver sido instalado:
npm instalar react-router-dom
Ou alternativa, usando fio:
yarn adicionar react-router-dom
Vamos também instalar o bootstrap para estilizar nosso componente:
inicialização de instalação npm
Em seguida, criamos um componente Breadcrumbs.tsx que conterá a marcação para a localização atual e também incluirá a lógica necessária para determinar a localização atual em relação à localização raiz.
Vamos começar adicionando uma marcação simples para o componente:
O componente atualmente possui apenas um botão Voltar. Vamos adicionar uma implementação simples para o botão Voltar, de modo que, quando clicado, a página anterior seja carregada:
const goBack = () => { window.history.back(); };
O próximo passo será escrever uma função que usará a função matchRoutes para obter a rota atual e aplicar transformações para filtrar todas as rotas relacionadas à rota atual.
O matchRoute aceita uma matriz de objetos do tipo AgnosticRouteObject e retorna um AgnosticRouteMatch
export interface IRoute { name: string; path: string; //Important }Vamos então declarar nossas rotas:
export interface IRoute { name: string; path: string; //Important }Também declaramos uma variável para manter o gancho useLocation e também outra para manter nossa localização atual no estado:
export interface IRoute { name: string; path: string; //Important }A seguir, vamos implementar nossa função:
export interface IRoute { name: string; path: string; //Important }Aqui, primeiro obtemos todas as rotas que correspondem à localização atual:
const allRoutes = matchRoutes(rotas, localização);
const matchedRoute = allRoutes? allRoutes[0] : null;
rotas.filter((x) => matchedRoute.route.path.includes(x.path))
export interface IRoute { name: string; path: string; //Important }Isso garante que se declararmos uma rota como /users/:id/edit nas rotas e o id for passado como 1, obteremos /users/1/edit.
Em seguida, vamos chamar nossa função em um useEffect para que ela seja executada sempre que nossa localização mudar:
export interface IRoute { name: string; path: string; //Important }Feito isso, podemos então usar as migalhas em nossa marcação:
export interface IRoute { name: string; path: string; //Important }Aqui, exiba todas as migalhas com seus links, exceto a última que exibe apenas o nome.
Com isso, agora temos nosso componente BreadCrumbs.tsx completo:
export interface IRoute { name: string; path: string; //Important }Podemos então usar o componente em qualquer parte da nossa aplicação, preferencialmente no layout.
Conclusão
Links úteis
https://medium.com/@mattywilliams/generating-an-automatic-breadcrumb-in-react-router-fed01af1fc3, no qual esta postagem se inspira.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3