React Routerのリンクコンポーネントの下線を取り除く方法は?


121

私は以下を持っています:

ここに画像の説明を入力してください

青い下線を取り除くにはどうすればよいですか?コードは以下のとおりです。

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

MenuItemコンポーネントはhttp://www.material-ui.com/#/components/menuにあります

洞察やガイダンスをいただければ幸いです。前もって感謝します。


7
子ではなくコンポーネントを配置textDecoration: 'none'<Link />ます。
azium

回答:


159

インラインスタイルを使用しているようです。textDecoration: 'none'子で使用されますが、実際にはそのように内部で使用する必要があります<Link>

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

<Link>基本的に標準<a>タグを返しますtextDecoration。そのため、ここでルールを適用します。

それが役に立てば幸い


2
textdecoration noneでグローバルを設定する方法はありますか?app.cssで?
stackdave 2017年

3
できます :)。スタイルを.cssにコピーして貼り付けた場合(もちろん、インラインスタイルは好きではないため)、text-decoration: none;
David Torres

62

を使用している場合はstyled-components、次のようにすることができます。

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} />;

61

MenuItem(およびボタンなどの他のMaterialUIコンポーネント)でreact-router-dom Linkを使用する最良の方法は、リンクを「コンポーネント」プロップで渡すことです。

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

「MenuItem」の「to」プロップでルートパスを渡す必要があります(これはLinkコンポーネントに渡されます)。この方法では、MenuItemスタイルを使用するため、スタイルを追加する必要はありません。


7
あなたは間違いなく2019年で答えなければなりません
パブロ・アナヤ

4
これは、上記の回答よりも優れたソリューションです。
Martin Nuc

これは間違いなく投稿されたものの最良の解決策です
royalaid

これはドキュメントよりも100倍優れており、役に立たないコードがたくさんあります
coiso

他のすべての答えは私を怖がらせます
coiso

30

リンクのスタイルを適切に削除する別の方法もあります。あなたはそれにスタイルを与える必要がありtextDecoration='inherit'color='inherit'あなたはそれらをスタイルとしてリンクタグに追加することができます:

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

または、より一般的にするには、次のようなcssクラスを作成します。

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

そして、ちょうど <Link className='text-link'>


私のソリューションを試しましたかstackoverflow.com/a/55693040/3000540
ダニエレウラニア

9

コンポーネントに追加style={{ textDecoration: 'none' }}してLink下線を削除できます。あなたはまた、より追加することができますcssstyleブロックなどstyle={{ textDecoration: 'none', color: 'white' }}

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

5

// CSS

.navigation_bar > ul > li {
      list-style: none;
      display: inline;
      margin: 2%;
    }

    .link {
      text-decoration: none;
    }

// JSX

 <div className="navigation_bar">
            <ul key="nav">
              <li>
                <Link className="link" to="/">
                  Home
                </Link>
              </li>
            </ul>
          </div>

5

App.css(または対応するもの)には核となるアプローチがあります

a{
  text-decoration: none;
}

これ<a>は、この問題の根本的な原因であるすべてのタグの下線を防ぎます


反応とスタイル付きjsxのソリューションではありません…
AntonAL

実際に、それはイムはSASSを使用して、私が反応横に私のために働いたと上記のすべてのソリューションを使用して、その解決策は、トリガーの<link>要素のスタイル...しませんでした
アーメドヨウネス

4

私のために働いて、ただ追加className="nav-link"してactiveStyle{{textDecoration:'underline'}}

<NavLink className="nav-link" to="/" exact activeStyle= 
  {{textDecoration:'underline'}}>My Record</NavLink>

2

ここを見てください-> https://material-ui.com/guides/composition/#button

これは公式のマテリアルUIガイドです。多分それは私にとってはあなたにとって有用でしょう。

ただし、場合によっては、下線が続くため、text-decoration: "none"を使用することもできます。よりクリーンな方法として、material-ui / coreからmakeStylesをインポートして使用できます。

import { makeStyles } from '@material-ui/core';

const useStyles = makeStyles(() => ({
    menu-btn: {
        textDecoration: 'none',
    },
}));

const classes = useStyles();

次に、JSXコードでclassName属性を{classes.menu-btn}に設定します。


その年の後で、これが私が必要とする答えであるとあなたに知らせたいと考えました、ありがとう!
kbreezy04

1

上の展開しGrgurの答え@あなたはインスペクタで見れば、あなたが使用していることを見つける、Linkコンポーネントが彼らにプリセットカラー値を提供しますcolor: -webkit-linktextDecorationデフォルトのハイパーリンクのように見せたくない場合は、これをオーバーライドする必要があります。

ここに画像の説明を入力してください




0
<Link to="/page">
    <Box sx={{ display: 'inline-block' }}>
        <PLink variant="primary">Page</PLink>
    </Box>
</Link>

場合によっては、Gatsbyコンポーネント内で別のコンポーネントを使用し、内部コンポーネントの周りにwithを<Link>追加するdivdisplay: 'inline-block'、(例では「ページ」の)下線が表示されなくなります。


0

誰かがmaterial-uiのLinkコンポーネントを探している場合。プロパティunderlineを追加してnoneに設定するだけです

<Link underline="none">...</Link>


0

多分あなたのような問題を解決しました。Firefoxで要素を調べてみました。結果をいくつか示します。

  1. それは私が調べた要素だけです。「リンク」コンポーネントは「a」タグに変換され、「to」プロップは「href」プロパティに変換されます。

  1. そして、私が:hovとオプション:hoverにチェックインすると、結果は次のようになります:

ご覧のとおり、a:hoverにはtext-decoration:underlineがあります。私はcssファイルにのみ追加します:

a:hover {
 text-decoration: none;
}

そして問題は解決されました。しかし、私はテキスト装飾も設定します:他のいくつかのクラス(あなた:Dなど)には何もありません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.