如何摆脱 React Router 的 Link 组件的下划线?

IT技术 javascript reactjs react-router
2021-05-13 23:38:19

我有以下几点:

在此处输入图片说明

我如何摆脱蓝色下划线?代码如下:

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

MenuItem 组件来自http://www.material-ui.com/#/components/menu

4个回答

我看到您正在使用内联样式。textDecoration: 'none'在 child 中使用,实际上它应该在 inside<Link>使用

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

<Link>基本上会返回一个标准<a>标签,这就是我们textDecoration在那里应用规则的原因

我希望有帮助

我认为在 MenuItem(以及其他 MaterialUI 组件,例如按钮)中使用 react-router-dom Link 的最佳方法是在“组件”props中传递 Link

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

您需要在“MenuItem”的“to”props中传递路由路径(它将被传递到链接组件)。通过这种方式,您不需要添加任何样式,因为它将使用 MenuItem 样式

如果您正在使用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} />;

还有另一种方法可以正确删除链接的样式。你必须给它的风格textDecoration='inherit'color='inherit'您可以添加为造型像的链接标签:

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

或者为了使它更通用,只需创建一个 css 类,如:

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

然后只是 <Link className='text-link'>