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

首次使用react-router报错:[App]不是<Route>组件问题咨询

问题解决:[App] is not a component 错误

错误核心原因:<Routes>组件的直接子元素必须是<Route>或<React.Fragment>,你的index.js中在<BrowserRouter>的<Routes>里直接放置了<App />,而App组件本身返回的也是<Routes>,这违反了React Router的规则。

修复方案一:修改index.js(推荐)

移除index.js中的<Routes>,直接在<BrowserRouter>下渲染<App />——因为App内部已经包含了完整的路由配置:

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";
import "bootstrap/dist/css/bootstrap.css";
import "font-awesome/css/font-awesome.css";
import "hover.css";
import "./App.css";
import { BrowserRouter } from "react-router-dom";

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

reportWebVitals();

修复方案二:调整App.jsx与index.js结构

将App组件改为基础容器,把路由配置移到index.js中:

修改后的App.jsx

import React, { Component } from "react";
import "./App.css";

class App extends Component {
  render() {
    return (
      <div className="App">
        {this.props.children}
      </div>
    );
  }
}

export default App;

修改后的index.js

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";
import "bootstrap/dist/css/bootstrap.css";
import "font-awesome/css/font-awesome.css";
import "hover.css";
import "./App.css";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import Customer from "./components/customer";
import Movies from "./components/moviesComponent";
import NotFound from "./components/not-found";
import Rentals from "./components/rentals";

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  <BrowserRouter>
    <Routes>
      <Route path="/movies" element={<App><Movies /></App>}></Route>
      <Route path="/rentals" element={<App><Rentals /></App>}></Route>
      <Route path="/customers" element={<App><Customer /></App>}></Route>
      <Route path="/not-found" element={<App><NotFound /></App>}></Route>
    </Routes>
  </BrowserRouter>
);

reportWebVitals();

额外优化建议

可以在路由配置中补充根路由跳转和404兜底逻辑,比如在App.jsx的<Routes>中添加:

<Route path="/" element={<Navigate to="/movies" />}></Route>
<Route path="*" element={<Navigate to="/not-found" />}></Route>

记得先导入Navigate组件:import { Route, Routes, Navigate } from "react-router-dom";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:45:35