React路由报错:路径'/'无匹配路由,已配置Home组件仍异常
先确认路由层级结构:
React Router v6+要求所有<Route>必须放在<Routes>组件内部,且整个应用要被<BrowserRouter>(或HashRouter)包裹。如果Home组件的路由写在Header里,但Header未被包含在<Routes>或Router上下文范围内,路由根本不会被识别。检查全局路由配置文件(比如App.js),要么把Header里的Route移到正确的<Routes>下,要么确保Header本身在Router的包裹范围内。核对React Router版本语法:
v6版本路由写法为<Route path="/" element={<Home />} />;v5及更早版本则是<Route path="/" component={Home} />或使用render属性。别混着用不同版本的语法,这是常见报错原因。检查路由匹配优先级:
有没有带*的通配路由放在了根路由/的前面?v6里路由按顺序匹配,前面的路由匹配上就不会往下走,要把根路由放在最前面,通配路由(比如404页面)放在最后。排查路由上下文是否生效:
确保根组件(比如index.js里的App)被<BrowserRouter>包裹,示例代码:import { BrowserRouter } from 'react-router-dom'; ReactDOM.render( <BrowserRouter> <App /> </BrowserRouter>, document.getElementById('root') );没有这层包裹的话,所有路由相关组件都无法正常工作。
另外,从仓库代码来看,大概率是路由配置分散在Header里但未正确整合到全局Routes结构中,或是版本语法用错了。建议把Home的Route移到App.js的<Routes>下,Header里只保留<NavLink>或<Link>用于跳转,路由配置尽量集中管理。
内容的提问来源于stack exchange,提问作者MOHD ZAID

