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

react-router-dom 6.4版本useNavigate()报错:需在<Router>上下文使用

解决思路
  • 检查依赖版本一致性
    确认react-router和react-router-dom的版本完全匹配,6.4+版本对这两个包的版本同步要求严格。运行npm ls react-router react-router-dom查看是否存在版本差异,若有则统一升级到相同的6.4+版本。同时检查是否存在重复安装的情况(比如项目根目录和子包的node_modules里都有该依赖),需清理多余安装。

  • 排查StrictMode的双重渲染影响
    React 18的<StrictMode>在开发环境会触发组件两次渲染,可能导致useNavigate在Router上下文未完全初始化时被调用。可以临时移除<StrictMode>测试,如果错误消失,说明是该问题导致。此时可以调整Orders组件内的逻辑:将useNavigate的调用放在useEffect钩子中,确保在组件挂载后再执行跳转操作,示例:

    import { useNavigate, useEffect } from 'react-router-dom';
    
    function Orders() {
      const navigate = useNavigate();
    
      useEffect(() => {
        // 这里放需要调用navigate的逻辑
        // 比如 navigate('/detail');
      }, [navigate]);
    
      // ...其他组件代码
    }
    
  • 检查组件内useNavigate的调用时机
    确保Orders组件中没有在顶层直接执行navigate的逻辑(比如组件渲染时立即调用navigate('/xxx')),这种同步执行的代码可能在Router上下文未就绪时触发错误。所有涉及navigate的操作都应放在副作用钩子(如useEffect)或事件回调(如按钮点击事件)中。

  • 再次确认导入正确性
    核实Orders组件中useNavigate的导入语句为import { useNavigate } from 'react-router-dom',排除从其他库或错误路径导入的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:45:30