reactjs React Router V6中的路由器不将历史对象作为端口

pieyvz9o  于 2022-12-18  发布在  React
关注(0)|答案(2)|浏览(125)

我对react和routing比较陌生,我尝试将我们的路由从V5迁移到v6,我的路由器代码如下所示

<Router history={history} key={Math.random()}>

但升级到路由器v6后,它给了我一个错误的历史 prop
(财产)历史:浏览器历史记录类型“{子项:元素;历史:浏览器历史记录;键:数字;“}"不能赋给类型”IntrinsicAttributes & RouterProps“。类型”IntrinsicAttributes & RouterProps“上不存在属性”history“。
如果历史记录不能作为路由器中的一个 prop 通过,我应该如何处理?

7kqas0il

7kqas0il1#

在React Router Dom V6中,我们应该使用useNavigate来执行重定向,而不是将history传递给Router。作为一个示例,下面是如何在组件中使用它:

import { useNavigate } from "react-router-dom";

export default function Component() {
  const navigate = useNavigate();

  return <button onClick={() => navigate("/home")}>Navigate To Home</button>;
}

由React Router Dom团队进行的guide迁移将在您的迁移过程中有所帮助。

xoefb8l8

xoefb8l82#

谢谢大家,基本上我在useEffect钩子中有一个history.listen来检测URL的变化,我用useLocation钩子代替,并使用BrowserRouter。

相关问题