【发布时间】:2020-08-07 07:00:25
【问题描述】:
假设页面上有一段文本(无论其样式是“传统”链接还是按钮),单击该文本会导致带有新页面/URL 的新页面。但是导航是以编程方式发生的(例如,通过 react-router 使用 History Web API)而不是硬 HTTP 刷新。
在这种情况下,它应该是带有href属性的传统锚链接,例如#还是一个按钮?
选项 1:
<a href="#" onClick={navigateToNextPage}>Link</a>
缺点是你有一个垃圾href 属性。您可以删除它,但它不在选项卡顺序中并且没有获得默认链接样式(尽管这些可以通过一次性样式来克服)。此外,如果您复制链接,它将复制为 #,这是不正确的,并且屏幕阅读器会错误地解释。
选项 2:
<button onClick={navigateToNextPage}>Link</a>
这里的缺点是,如果您希望它看起来像传统链接,则需要应用自定义样式。在我看来,在某些方面它确实像一个传统的链接。但这对于屏幕阅读器来说会更好。
【问题讨论】:
-
使用
history.push()或<Link to='' >Link</Link>。该链接将转换为<a>,但不会执行“硬刷新: -
@Enchew 现在我正在使用
history.push(),但是在href属性的锚标记中添加什么?现在它也不是很容易访问。 -
我的意思是在按钮上使用
history.push(),但是如果你想要标签,使用'react-router-dom'中的<Link>组件,而不是纯 -
@Enchew 是否应该将按钮用于页面/URL 导航?
-
有时需要它们——例如,如果你想执行一个 ajax 调用然后重定向用户,或者在状态中保存一些东西,或者任何一般的操作。如果你想要简单的导航,我建议你使用
<Link>
标签: javascript html reactjs react-router accessibility