reactjs 返回时屏幕阅读器未阅读标题- React JS

ijxebb2r  于 2023-01-25  发布在  React
关注(0)|答案(1)|浏览(142)

我想使标题(H1标记)自动聚焦在页面加载,以便屏幕阅读器可以阅读标题。
使用下面的代码,我使它按预期工作。
<fieldset> <h1 role="alert"> <a id="specialfocusable" tabIndex={-1}> Component A </a> </h1> </fieldset>
我的应用程序就像一个步进器,我们从component A移动到Component B类似于Component B移动到component A
问题是当从Component B导航到component A时,屏幕阅读器无法读取标题文本。
请帮我解决这个问题,因为我找不到任何解决方案.
下面是应用程序链接https://stackblitz.com/edit/react-ts-ckrut8?file=a.tsx

7d7tgy0s

7d7tgy0s1#

简单地清理这些代码就足够了:

<h1 id="h1" tabindex="-1">Component 1</h1>

接着是

h1.focus()

发布的代码中有很多错误,这可能会导致屏幕阅读器出现问题。
最重要的是,它改变了H1的角色。大多数屏幕阅读器用户依靠查找标题来定位和导航。例如,有一些快捷方式可以帮助直接跳转到H1。
由于焦点已移到标题,因此不需要alert。它将在焦点上发布。
一个<fieldset> is for forms并且需要一个可访问的名称。它在这里是无效的。

如何应对?

要聚焦一个元素,需要访问呈现的DOM。因此,将ref属性与useRef()一起使用

function MyComponent() {
  const h1Ref = useRef(null);

  useEffect(() => {
    h1Ref.current.focus();
  }, []);

  return <h1 ref={h1Ref} tabIndex={-1} />;
}

相关问题