You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在函数中使用react-router-dom实现新页面路由跳转?

函数内触发react-router-dom路由跳转实现方案

版本适配说明

  • react-router-dom v5 版本使用useHistory钩子实现编程式导航
  • react-router-dom v6 版本移除了useHistory,改用useNavigate钩子替代

具体实现逻辑

1. v5版本(与你现有代码匹配)

你补充的Register组件中已经使用了正确的写法:在组件顶层调用useHistory获取history实例后,在任意函数/副作用中调用history.push(目标路由)即可触发跳转。
对应你初始提问的示例函数改造如下:

// 先从react-router-dom引入钩子
import { useHistory } from "react-router-dom";

function YourComponent() {
  // 组件顶层调用钩子获取实例
  const history = useHistory();

  function functionName(success){
    if (success){
      // 此处直接调用push方法跳转
      history.push("/login");
    }
  }

  // 剩余组件逻辑...
}

你现有Register组件中通过useEffect监听data.success变化后跳转的写法完全符合v5版本的使用规范,无需调整。

2. v6版本(若后续升级框架可参考)

v6版本的用法和v5基本一致,仅钩子替换为useNavigate:

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

function YourComponent() {
  const navigate = useNavigate();

  function functionName(success){
    if (success){
      // 直接传入目标路由即可跳转
      navigate("/login");
      // 若需要替换当前历史记录(禁止用户点后退返回当前页),可加配置项
      // navigate("/login", { replace: true })
    }
  }

  // 剩余组件逻辑...
}

现有代码优化建议

你当前的Login组件如果需要实现登录成功后跳转的逻辑,和Register组件逻辑完全一致:v5版本引入useHistory,在登录请求回调中判断成功后调用history.push跳转到对应页面即可。

内容的提问来源于stack exchange,提问作者Tamir Polyakov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:06:04