如何在 react-router-dom v6 中返回上一条路线

Posted

技术标签:

【中文标题】如何在 react-router-dom v6 中返回上一条路线【英文标题】:How to go back to previous route in react-router-dom v6 【发布时间】:2021-05-03 00:43:50 【问题描述】:

在早期版本中,我们可以使用 history 返回到以前的路线

history.goBack()

如何使用 react-router-domv6 实现这一目标?

【问题讨论】:

github.com/ReactTraining/react-router/blob/dev/docs/… 看起来可能在useNavigate 【参考方案1】:

试试这个方法

import  useNavigate  from 'react-router-dom';

function YourApp() 
  const navigate = useNavigate();

  return (
    <>
      <button onClick=() => navigate(-1)>go back</button>
    </>
  );

【讨论】:

这真的很有帮助。谢谢【参考方案2】:

在 V6 中,

import  useNavigate  from 'react-router-dom';
 
function App() 
  const navigate = useNavigate();
 
  return (
    <>
      <button onClick=() => navigate(-2)>Go 2 pages back</button>
      <button onClick=() => navigate(-1)>Go back</button>
      <button onClick=() => navigate(1)>Go forward</button>
      <button onClick=() => navigate(2)>Go 2 pages forward</button>
    </>
  );

【讨论】:

我已经尝试过了,但在 v6 中 useHistory 不在 react-router-dom 中 我的错。编辑我的 v6 答案。【参考方案3】:

在旧版本的 react-router-dom 中存在 pop 函数

您可以通过以下方式联系他们:

const history = useHistory();
history.pop()

现在在 v6 中,您可以使用函数 useNavigate

const navigate = useNavigate();
navigate(-1) // you will go one page back
navigate(-2) // you will go two pages back

【讨论】:

以上是关于如何在 react-router-dom v6 中返回上一条路线的主要内容,如果未能解决你的问题,请参考以下文章

在 React Router v6 中,如何在离开页面/路由之前检查表单是不是脏

如何在反应路由器 Dom v6 中导航到单独的 URL?

如何仅在特定页面上显示 route.v6 上的导航栏?

IP V6和IP V4有啥区别?如何兼容?

当客户端未在标头中发送内容长度时,rails v6 如何填充 REQUEST 的内容长度?

如何检索 IP v6 子网掩码长度