Bagaimana cara menghilangkan garis bawah untuk komponen Link dari React Router?


121

Saya memiliki yang berikut ini:

masukkan deskripsi gambar di sini

Bagaimana cara menghilangkan garis bawah biru? Kode di bawah ini:

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

Komponen MenuItem berasal dari http://www.material-ui.com/#/components/menu

Wawasan atau panduan apa pun akan sangat dihargai. Terima kasih sebelumnya.


7
menempatkan textDecoration: 'none'pada <Link />komponen tidak anak-anaknya.
azium

Jawaban:


160

Saya melihat Anda menggunakan gaya sebaris. textDecoration: 'none'digunakan pada anak-anak, yang sebenarnya harus digunakan di dalam <Link>seperti:

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

<Link>pada dasarnya akan mengembalikan <a>tag standar , itulah sebabnya kami menerapkan textDecorationaturan di sana.

saya harap itu membantu


2
ada cara untuk mengatur global dengan tidak ada dekorasi teks? di app.css?
stackdave

3
Berhasil :). Ketahuilah bahwa jika Anda menyalin dan menempelkan gaya ke .css Anda (karena, tentu saja, Anda tidak suka gaya sebaris) makatext-decoration: none;
David Torres

63

Jika Anda menggunakan styled-components, Anda dapat melakukan sesuatu seperti ini:

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

62

Saya pikir cara terbaik untuk menggunakan react-router-dom Link di MenuItem (dan komponen MaterialUI lainnya seperti tombol) adalah dengan meneruskan Link di prop "komponen"

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

Anda harus melewati jalur rute di prop 'ke' dari "MenuItem" (yang akan diteruskan ke komponen Tautan). Dengan cara ini Anda tidak perlu menambahkan gaya apa pun karena akan menggunakan gaya MenuItem


7
Anda pasti harus menjadi jawabannya di 2019.
Pablo Anaya

4
Ini adalah solusi yang lebih baik daripada jawaban di atas.
Martin Nuc

Ini jelas merupakan solusi terbaik dari yang diposting
royalaid

Ini 100x lebih baik daripada dokumen, mereka menghapus banyak kode yang tidak berguna
coiso

Semua jawaban lain membuatku takut
coiso

30

Ada juga cara lain untuk menghapus gaya tautan dengan benar. Anda harus memberikan gaya textDecoration='inherit'dan color='inherit'Anda dapat menambahkannya sebagai gaya ke tag tautan seperti:

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

atau untuk membuatnya lebih umum buat saja kelas css seperti:

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

Dan kemudian baru saja <Link className='text-link'>


sudahkah Anda mencoba solusi saya stackoverflow.com/a/55693040/3000540
Daniele Urania

9

Anda dapat menambahkan komponen style={{ textDecoration: 'none' }}Anda Linkuntuk menghapus garis bawah. Anda juga dapat menambahkan lebih banyak cssdi styleblok misalnya 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

Ada pendekatan nuklir yang ada di App.css Anda (atau mitra)

a{
  text-decoration: none;
}

yang mencegah garis bawah untuk semua <a>tag yang merupakan akar penyebab masalah ini


Bukan solusi untuk bereaksi dan bergaya-jsx…
AntonAL

sebenarnya ini adalah solusi yang berhasil bagi saya karena saya menggunakan sass di samping reaksi saya dan menggunakan semua solusi di atas tidak memicu <link> gaya komponen ..
Ahmed Younes

4

Bekerja untuk saya, tambahkan saja className="nav-link"danactiveStyle{{textDecoration:'underline'}}

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

2

Lihat di sini -> https://material-ui.com/guides/composition/#button .

Ini adalah panduan materi-ui resmi. Mungkin itu akan berguna bagi Anda seperti bagi saya.

Namun, dalam beberapa kasus, garis bawah tetap ada dan Anda mungkin ingin menggunakan hiasan teks: "tidak ada" untuk itu. Untuk pendekatan yang lebih bersih, Anda dapat mengimpor dan menggunakan makeStyles dari material-ui / core.

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

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

const classes = useStyles();

Dan kemudian setel atribut className ke {class.menu-btn} di kode JSX Anda.


Saya pikir saya akan memberi tahu Anda bahwa tahun itu nanti, ini adalah jawaban yang saya butuhkan, terima kasih!
kbreezy04

1

Untuk memperluas jawaban @ Grgur , jika Anda melihat inspektur Anda, Anda akan menemukan bahwa menggunakan Linkkomponen memberi mereka nilai warna yang telah ditetapkan color: -webkit-link. Anda harus menimpa ini bersama dengan textDecorationjika Anda tidak ingin terlihat seperti hyperlink default.

masukkan deskripsi gambar di sini


1
style={{ backgroundImage: "none" }}

Hanya ini yang berhasil untuk saya


1
a:-webkit-any-link {
  text-decoration: none;
  color: inherit;
}

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

Dalam beberapa kasus saat menggunakan komponen lain di dalam <Link>komponen Gatsby , menambahkan divdengan di display: 'inline-block'sekitar komponen dalam, mencegah garis bawah (dari 'Halaman' dalam contoh).


0

Jika seseorang mencari material-uikomponen Link. Cukup tambahkan properti underlinedan setel ke tidak ada

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


0

Saya telah menyelesaikan masalah mungkin seperti Anda. Saya mencoba memeriksa elemen di firefox. Saya akan menunjukkan beberapa hasil:

  1. Itu hanya elemen yang telah saya periksa. Komponen "Link" akan diubah menjadi tag "a", dan properti "ke" akan diubah menjadi properti "href":

  1. Dan ketika saya mencentang: hov dan opsi: hover dan inilah hasilnya:

Seperti yang Anda lihat: hover memiliki text-decoration: underline. Saya hanya menambahkan ke file css saya:

a:hover {
 text-decoration: none;
}

dan masalah teratasi. Tapi saya juga mengatur dekorasi teks: tidak ada di beberapa kelas lain (seperti Anda: D), yang mungkin membuat beberapa efek (saya kira).


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.