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

React Router v6路由不生效 导入组件无法正常渲染

问题现象
  • 开发React项目时出现组件渲染阻塞:路由关联组件无法正常识别渲染
  • 编辑器可识别已导入的组件文件,但组件名称未显示对应语法高亮
  • 项目启动运行后,直接写在路由容器外的Header、Footer组件可正常展示,所有配置的路由规则均不生效,对应路由页面内容完全无法渲染
  • 项目核心依赖版本:react-router-dom@6.3.0、react@18.2.0
问题根因

使用了React Router v5版本的路由写法,和当前安装的v6版本API不兼容:

  1. React Router v6 移除了v5版本中Route组件的component、render属性,统一使用element属性接收要渲染的内容
  2. element属性要求传入JSX元素节点,而非组件本身的引用
  3. 404兜底路由缺少通配符路径配置path="*",无法匹配所有未定义的路由路径
错误代码片段

原App组件中错误的路由配置:

<Routes>
    <Route path="/"  component= {Home} />
    <Route path="/movie/:imdbID" component={MovieDetails}/>
    <Route element={PageNotFound}/>
</Routes>
修复方案

修改App组件中的路由配置,适配v6版本API规范,修复后完整代码如下:

import React from 'react';
import {BrowserRouter as Router, Route, Routes} from "react-router-dom";
import './App.scss';
import Header from "./components/Header/Header";
import Home from "./components/Home/Home";
import MovieDetails from "./components/MovieDetails/MovieDetails";
import Footer from "./components/Footer/Footer";
import PageNotFound from "./components/PageNotFound/PageNotFound";

function App() {
  return (
    <div className="app">
     <Router>
      <Header />
      <Routes>
          {/* v6版本element属性传入JSX标签,而非组件引用 */}
          <Route path="/"  element={<Home />} />
          <Route path="/movie/:imdbID" element={<MovieDetails />}/>
          {/* 404路由添加path="*"通配符,匹配所有未定义路径 */}
          <Route path="*" element={<PageNotFound />}/>
      </Routes>
      <Footer />
     </Router>
    </div>
  );
}

export default App;

修改保存后重启开发服务,路由即可正常匹配渲染对应组件。

注:Header、Footer组件不受路由配置错误影响,是因为二者作为普通React组件直接写在路由容器下,不属于路由规则控制渲染的内容,所以可以正常展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:18:19