Links
O componente Link permite que você personalize facilmente elementos de âncora com suas cores de tema e estilos de tipografia.
Links simples
O componente Link é construído sobre o componente Typography. Você pode aproveitar suas propriedades.
<Typography className={classes.root}>
<Link href="#" onClick={preventDefault}>
Link
</Link>
<Link href="#" onClick={preventDefault} color="inherit">
{'color="inherit"'}
</Link>
<Link href="#" onClick={preventDefault} variant="body2">
{'variant="body2"'}
</Link>
</Typography>
No entanto, o componente Link possui propriedades padrão diferentes do componente Typography:
- A propriedade
color="primary"
, pelo fato de que o link precisa se destacar. - A propriedade
variant="inherit"
, já que o link será na maioria das vezes usado como filho de um componente Typography.
Segurança
Quando você usa target="_blank"
com Links, é recomendado sempre definir rel="noopener"
ou rel="noreferrer"
quando conectando a conteúdo de terceiros.
rel="noopener"
impede que a nova página possa acessar a propriedadewindow.opener
e garante que ela seja executada em um processo separado. Sem isso, a página de destino pode potencialmente redirecionar sua página para uma URL mal-intencionada.rel="noreferrer"
tem o mesmo efeito, mas também impede que o cabeçalho Referer seja enviado para a nova página. ⚠️ A remoção do cabeçalho referrer afetará a análise.
Biblioteca de roteamento de terceiros
Uma situação comum é executar a navegação apenas no lado do cliente, sem uma ida e volta HTTP ao servidor. O componente Link
fornece uma propriedade para lidar com esta situação: component
.
Aqui está um exemplo de integração com react-router.
Acessibilidade
(WAI-ARIA: https://www.w3.org/TR/wai-aria-practices/#link)
- Ao fornecer o conteúdo para o link, evite descrições genéricas como "clique aqui" ou "vá para". Em vez disso, use descrições específicas.
- Para a melhor experiência do usuário, os links devem se destacar do texto na página.
- Se o link não tem um href significativo, ele deve ser renderizado usando um elemento
<button>
.
<Link
component="button"
variant="body2"
onClick={() => {
console.info("I'm a button.");
}}
>
Button Link
</Link>