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

如何在React Router的Outlet中显示默认组件?

如何在React Router的Outlet中显示默认组件?

嘿,我来帮你搞定这个问题!你现在的情况是访问根路由 / 时,<Outlet/> 里是空的,想让它默认显示类似 <p>Home</p> 的内容对吧?React Router 提供了很直接的解决方案,这里给你两种常用的实现方式:

方法一:使用 index 路由(官方推荐)

这是 React Router 专门为父路由默认内容设计的方案,只需要在根路由的子路由列表里添加一个不带 path 的 index 路由即可:

修改你的 index.js 代码:

ReactDOM.render(
  <React.StrictMode>
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<App/>}>
          {/* 添加这一行 index 路由,作为根路由的默认内容 */}
          <Route index element={<p>Home</p>}/> 
          <Route path="page1" element={<Page1/>}/>
          <Route path='page2' element={<Page2/>}/>
        </Route>
      </Routes>
    </BrowserRouter>
  </React.StrictMode>,
  document.getElementById('root')
);

如果之后想把默认内容抽成独立组件(比如 <Home/>),直接把 element 值换成 <Home/> 就可以,灵活性拉满。

方法二:在 App 组件中判断路由

如果不想额外添加路由配置,也可以在 App 组件里通过 useLocation 钩子判断当前路径,手动渲染默认内容:

首先需要导入 useLocation:

import { Outlet, Link, useLocation } from 'react-router-dom';

然后修改 App 组件:

function App() {
  const location = useLocation();

  return (
    <div className="App">
      <Link to='/'>Home</Link> {' '}
      <Link to='/page1'>Page 1</Link> {' '}
      <Link to='/page2'>Page 2</Link>
      <main>
        {/* 路径为根路由时显示默认内容,否则渲染 Outlet */}
        {location.pathname === '/' ? <p>Home</p> : <Outlet/>}
      </main>
    </div>
  );
}

不过这种方式不如第一种贴合 React Router 的路由设计理念,除非有特殊需求,还是更推荐用 index 路由的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:54:05