reactjs - 如何使用键盘 Tab 键聚焦于 Material UI Link(不使用组件 ="button")

标签 reactjs react-hooks material-ui

我不明白如何使用键盘中的 Tab 键来关注 Material UI Link。我将链接放置在按钮内以完成工作。但是有什么方法可以仅使用 Link.js 来满足我的需求吗?我将删除codesandbox 链接以获取完整详细信息。提前致谢。

沙盒链接:https://codesandbox.io/s/material-demo-forked-4evbh?file=/demo.tsx

来自沙箱的代码:

/* eslint-disable jsx-a11y/anchor-is-valid */
import React from "react";
import { makeStyles, createStyles, Theme } from "@material-ui/core/styles";
import Link from "@material-ui/core/Link";
import Typography from "@material-ui/core/Typography";

const useStyles = makeStyles((theme: Theme) =>
  createStyles({
    root: {
      "& > * + *": {
        marginLeft: theme.spacing(2)
      }
    }
  })
);

export default function Links() {
  const classes = useStyles();

  const [state, setState] = React.useState(true);

  const handleClick = () => {
    setState(!state);
  };

  return (
    <Typography className={classes.root}>
      <Link onClick={handleClick}>Link</Link>
      <Typography>Click on above link to display hidden content..</Typography>
      {state ? "" : "focus on Link using Tab key?"}
    </Typography>
  );
}

最佳答案

来自Accessibility portion Link的文档:

If a link doesn't have a meaningful href, it should be rendered using a <button> element.

文档中的示例如下:

import React from 'react';
import Link from '@material-ui/core/Link';

export default function ButtonLink() {
  return (
    <Link
      component="button"
      variant="body2"
      onClick={() => {
        console.info("I'm a button.");
      }}
    >
      Button Link
    </Link>
  );
}

Edit Material demo

当您不指定 component="button" 时,Link 的默认组件将是 <a>标签,但是 <a>没有 href 的标签属性未接收键盘焦点。

关于reactjs - 如何使用键盘 Tab 键聚焦于 Material UI Link(不使用组件 ="button"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65700802/

相关文章:

javascript - 为什么我的组件使用 React.memo 重新渲染

javascript - 如何在组件内使用 React 自定义环境变量

javascript - (语法?)this.state 不是一个函数错误&在 componentDidMount 中排序

javascript - React-router 链接不会被访问

javascript - 传递带有事件和参数的函数,在 React 中没有无限循环

reactjs - 带有通用类型的自定义 Hook TypeScript

datagrid - Material-ui DataGrid 和无限滚动

javascript - Material-UI:如何使用 typescript 为 React.ComponentType<P> 声明类型

javascript - 如何在我的 react 代码中强制更新我的组件以将深色主题切换为浅色主题

javascript - 从嵌套的 map 对象javascript中删除重复项