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

React Router路由报错:匹配的/home路由无element或Component

解决React Router DOM路由错误:"Matched leaf route at location '/home' does not have an element or Component"

问题根源

你用的是React Router DOM v6版本,但代码还在沿用v5的旧写法:

  • v6里<Route>组件不再支持component属性,必须改用element传递组件实例
  • v6的<Routes>默认就是精确匹配,不需要写exact属性

你代码里的component={<Home />}是错误写法(v5里component该传组件本身而非实例,v6则完全用element替代),导致路由无法正确渲染组件,触发了错误提示。

修改后的App.js代码

import './App.css';
import { BrowserRouter as Router, Routes, Route } from "react-router-dom"
import React from "react";
import Home from './Screens/Home';
import Sleep from './Screens/Sleep';
import Brew from './Screens/Brew';
import Navigation from './Navigation';
import Steam from './Screens/Steam';

function App() {
  return(
    <div className="App">
      <Router>
        <Navigation/>
        <Routes>
          {/* 去掉exact,改用element属性传递组件JSX */}
          <Route path="/home" element={<Home />} />
          <Route path="/sleep" element={<Sleep />} />
          <Route path="/brew" element={<Brew />} />
          <Route path="/steam" element={<Steam />} />
          {/* 可选:添加默认路由,匹配不到路径时跳转到首页 */}
          <Route path="/" element={<Home />} />
        </Routes>
      </Router>
    </div>
  )
}

export default App;

额外说明

  • Navigation.js里的<NavLink>在v6中可以正常使用,activeClassName="active"属性依然有效,无需修改
  • 如果需要更灵活的激活类名控制,也可以用回调函数写法:
    <NavLink 
      to={tab.route} 
      className={({ isActive }) => 
        `nav-link bottom-nav-link ${isActive ? 'active' : ''}`
      }
    >
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:12:52