在 React Router v6 中,我如何使用
<Link>
而不是 useNavigate()
返回到上一页?// Instead of this...
<button onClick={() => navigate(-1)}>
// ...it needs to be this:
const previousPage = ???
<Link to={previousPage}>Go back</Link>
将它更改为<Link>
将允许我使用<a href="xxxx">
而不是<button>
,这是创建页面之间链接最易于访问的方式。(有关按钮与链接的更多信息)。例如,它允许用户右键单击并在新标签页中打开页面。
但我不知道要传递给Link的URL。
更新:我创建了一个codesandbox来帮助您找到解决方案。
更新2:根据答案和一些研究,我创建了一个 GitHub 问题以 react-router
为基础
更新3:我在下面添加了自己的答案。
to={'..'}
是一种hack方法。使用onClick
的解决方案并不完美,因为如果用户在新页面上打开链接(例如右键单击),它将无法转到与navigate(-1)
相同的路由。 我认为解决方案是使用原生JS获取最近访问的页面,并将其设置为href。我明天稍后会尝试实现这一点。 - sandrina-ponClick
处理程序无法工作的评论,它使用了与其他地方相同的navigate(-1)
。我在Github上看到了你的评论,你能否澄清一下关于不可访问性的评论?我无法理解关于打开新页面并使代码不进入预期目标的评论,所以也许我没有理解你具体指的是什么。 - Drew Reese".."
解析为目标 URL 的方式上。就像我所说的那样,它不是技术上的后退导航,它导航到一个路径段向后/向上。除了提供onClick
处理程序并覆盖默认的链接行为外,实际上没有任何锚点标记/链接的方法来发出返回导航。您可以尝试维护自己的历史记录堆栈,在应用程序状态中提供此作为任何链接的目标路径,以便导航到先前的位置。但请注意,这仍然不是后退导航,它将是 PUSH 而不是 POP。 - Drew Reese