252 votes

Comment se débarrasser du soulignement pour le composant Link de React Router ?

J'ai les éléments suivants :

enter image description here

Comment se débarrasser du soulignement bleu ? Le code est ci-dessous :

<Link to="first"><MenuItem style={{paddingLeft: 13, textDecoration: 'none'}}> Team 1 </MenuItem></Link>

Le composant MenuItem est issu de http://www.material-ui.com/#/components/menu

14 votes

Mettre textDecoration: 'none' sur le <Link /> et non ses enfants.

322voto

Grgur Points 3128

Je vois que vous utilisez des styles en ligne. textDecoration: 'none' est utilisé dans child, alors qu'en fait il devrait être utilisé à l'intérieur de <Link> comme tel :

<Link to="first" style={{ textDecoration: 'none' }}>
  <MenuItem style={{ paddingLeft: 13 }}>Team 1</MenuItem>
</Link>

<Link> retournera essentiellement un <a> c'est pourquoi nous appliquons la balise textDecoration règle là-bas.

J'espère que cela vous aidera.

8 votes

Y a-t-il un moyen de définir le global avec textdecoration none ? dans le app.css ?

4 votes

Cela fonctionne :). Sachez que si vous copiez-coller le style dans votre .css (parce que, bien sûr, vous n'aimez pas les styles en ligne), alors le style est text-decoration: none;

155voto

datatracer Points 101

Je pense que la meilleure façon d'utiliser le lien react-router-dom dans un MenuItem (et d'autres composants MaterialUI comme les boutons) est de passer le lien dans la prop "component".

<Menu>
   <MenuItem component={Link} to={'/first'}>Team 1</MenuItem>
   <MenuItem component={Link} to={'/second'}>Team 2</MenuItem>
</Menu>

vous devez transmettre le chemin d'accès dans la propriété "to" du "MenuItem" (qui sera transmis au composant Link). De cette façon, vous n'avez pas besoin d'ajouter de style, car il utilisera le style de l'élément de menu.

25 votes

Le vôtre devrait définitivement être la réponse en 2019.

10 votes

C'est une meilleure solution que les réponses ci-dessus.

4 votes

C'est certainement la meilleure solution parmi celles proposées.

97voto

Joe Privett Points 55

Si vous utilisez styled-components vous pourriez faire quelque chose comme ça :

import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import styled from 'styled-components';

const StyledLink = styled(Link)`
    text-decoration: none;

    &:focus, &:hover, &:visited, &:link, &:active {
        text-decoration: none;
    }
`;

export default (props) => <StyledLink {...props} />;

80voto

Panos Points 506

Il existe également un autre moyen de supprimer correctement le style du lien. Vous devez lui donner un style de textDecoration='inherit' y color='inherit' vous pouvez soit les ajouter comme style à la balise du lien comme :

<Link style={{ color: 'inherit', textDecoration: 'inherit'}}>

ou pour rendre cela plus général, il suffit de créer une classe css comme :

.text-link {
    color: inherit;
    text-decoration: inherit;
}

Et puis juste <Link className='text-link'>

0 votes

Avez-vous essayé ma solution stackoverflow.com/a/55693040/3000540

1 votes

Cela devrait être la réponse acceptée, car elle supprime également le changement de couleur. Par ailleurs, existe-t-il un moyen de traduire cette classe CSS en JSS ? J'ai eu le même problème avec material-ui et l'utilisation du style prop m'a aidé.

1 votes

Fonctionne parfaitement.

16voto

Shubham Verma Points 2132

Vous pouvez ajouter style={{ textDecoration: 'none' }} dans votre Link pour supprimer le soulignement. Vous pouvez également ajouter d'autres css en el style bloc, par exemple style={{ textDecoration: 'none', color: 'white' }} .

<h1>
  <Link style={{ textDecoration: 'none', color: 'white' }} to="/getting-started">
    Get Started
  </Link>
</h1>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X