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

react-router-dom v6.2.2 报错:TypeError: Object(...) is not a function 求助

解决React Router v6.2.2中TypeError: Object(...) is not a function的问题

嘿,我帮你找到了这个错误的核心原因,以及对应的解决办法:

错误根源

在React Router v6版本中,所有使用<Routes>、<Route>、<Link>这类路由相关组件的代码,必须被一个路由提供者组件(比如<BrowserRouter>)包裹。这些组件依赖Router提供的上下文来工作,如果没有这个包裹,就会抛出你遇到的TypeError: Object(...) is not a function错误。

看你的代码,App.js直接返回了包含<Link>和<Routes>的组件,但没有用任何Router组件包裹,这就是问题所在。

具体解决步骤

步骤1:导入BrowserRouter

在你的入口文件(比如index.js)或者App.js中,从react-router-dom导入BrowserRouter:

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

步骤2:用BrowserRouter包裹路由相关组件

如果是在index.js中修改,修改后的代码大概是这样:

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import { BrowserRouter } from "react-router-dom";

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </React.StrictMode>
);

如果你想在App.js中直接修改,也可以这样写:

// App.js中更新导入语句
import { Route, Routes, Link, BrowserRouter } from "react-router-dom";

// 修改render方法
render() {
  return (
    <BrowserRouter>
      <div>
        <div id="fb-editor" ref={this.fb} />
        <Link to="/formdata">form structure</Link>
        <button onClick={this.saveFile}>save</button>
        <Routes>
          <Route path="/formdata" element={<RenderForm />} />
        </Routes>
      </div>
    </BrowserRouter>
  );
}

额外优化建议

注意到你写的<Link to="formdata">,这里用的是相对路径,建议改成绝对路径<Link to="/formdata">,这样无论当前处于哪个路径,都能正确跳转到目标路由,避免出现路径错误的问题。

验证修改

完成上述修改后,重新启动你的应用,应该就能解决这个类型错误,路由功能也能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:44:05