React RouterDom中Outlet与子路由无法正常工作问题求助
问题解决:React Router嵌套路由无法渲染内容
你的问题出在路由嵌套关系配置错误:当前/painel和dashboard是同级路由,并非嵌套关系,所以访问/painel/dashboard时,React Router找不到匹配的路由规则,自然不会渲染Painel组件里的Outlet内容。
正确的路由配置方式
把dashboard路由作为/painel的子路由嵌套进去,修改App组件里的路由代码:
export function App() { return ( <> <PrimeReactProvider> <BrowserRouter> <Routes> <Route path="/login" element={<LoginPage />} /> {/* 把dashboard路由嵌套在painel路由内部 */} <Route path="/painel" element={<Painel />}> <Route path="dashboard" element={<DashBoard />} /> {/* 可选:添加index路由,访问/painel时默认渲染的内容 */} {/* <Route index element={<PainelDefaultContent />} /> */} </Route> </Routes> </BrowserRouter> </PrimeReactProvider> </> ) }
为什么之前的尝试没用?
- 把
/painel改成/painel/或/painel/*:React Router v6里不需要这种写法,嵌套路由靠子Route来关联,/*是通配符路由,和嵌套逻辑无关。 - 把
dashboard改成/painel/dashboard:这会让它变成独立的顶级路由,只会单独渲染DashBoard,不会走Painel的嵌套渲染逻辑。 - 移除
BrowserRouter:这会直接导致路由完全失效,显然没用。
修改后访问/painel/dashboard,Painel组件的PainelMenu会正常显示,Outlet位置会渲染DashBoard的内容。
内容的提问来源于stack exchange,提问作者Davi Américo
相关产品推荐
相关产品推荐

