GatsbyJS 链接组件有一个边框,就像是从键盘上用 TAB 键选择的一样

ind*_*jsx 3 reactjs material-ui gatsby

我可以提到向上和向下箭头键移动选择,这让我相信它以某种方式被标签化。

在此处输入图片说明

有一个 material-ui Menu 组件,它具有封装 MenuItems 组件的 Gatsby Link 组件。我删除了不相关的代码。

class NavBarDesktop extends React.Component {
  state = {
    anchorEl: null,
  }

  handleClick = event => {
    this.setState({ anchorEl: event.currentTarget })
  }

  handleClose = () => {
    this.setState({ anchorEl: null })
  }

  render() {        
    const { anchorEl } = this.state

    return (
      <div>
        <Button
          aria-owns={anchorEl ? 'fade-menu' : null}
          onClick={this.handleClick}
          className={classes.button}
        >
          Categories
        </Button>
        <Menu
          id="fade-menu"
          anchorEl={anchorEl}
          open={Boolean(anchorEl)}
          onClose={this.handleClose}
        >
          <Link to={'accessories'}>
            <MenuItem onClick={this.handleClose}>Accessories</MenuItem>
          </Link>
          <Link to={'automotive'}>
            <MenuItem onClick={this.handleClose}>Automotive</MenuItem>
          </Link>
          <Link to={'electronics'}>
            <MenuItem onClick={this.handleClose}>Electronics</MenuItem>
          </Link>
        </Menu>
      </div>
    )
  }
}

NavBarDesktop.propTypes = {
  classes: PropTypes.object.isRequired,
}

export default withStyles(styles)(NavBarDesktop)
Run Code Online (Sandbox Code Playgroud)

以前有人遇到过这个吗?

Nen*_*enu 5

我不太明白你的问题,但如果你希望得到material-ui的行为,我建议你按照第三方路由库文档中的建议编写导航按钮。

我在我的项目中使用它:

// ./src/components/LinkMenuItem.js

import React from 'react';
import PropTypes from 'prop-types';
import Link from 'gatsby-link';

import MenuItem from '@material-ui/core/MenuItem';

const LinkMenuItem = ({ to, children, ...rest }) => (
  <MenuItem component={Link} to={to} {...rest}>
    {children}
  </MenuItem>
);

LinkMenuItem.propTypes = {
  to: PropTypes.string.isRequired,
  children: PropTypes.string.isRequired,
};

export default LinkMenuItem;
Run Code Online (Sandbox Code Playgroud)

然后在您的NavBarDesktop组件中:

import LinkMenuItem from './path/to/component';

// ...

<Menu
  id="fade-menu"
  anchorEl={anchorEl}
  open={Boolean(anchorEl)}
  onClose={this.handleClose}
>
  <LinkMenuItem onClick={this.handleClose} to='/accessories'>Accessories</LinkMenuItem>
  <LinkMenuItem onClick={this.handleClose} to='/automotive'>Automotive</LinkMenuItem>
  <LinkMenuItem onClick={this.handleClose} to='/electronics'>Electronics</LinkMenuItem>
</Menu>
Run Code Online (Sandbox Code Playgroud)