---
tags: [frontend, react, react-router, routing, nested-routes]
create time: 2026-04-25 15:30
---
# Outlet:嵌套路由的出口 / 占位符
## 概述
`Outlet` 是 React Router 中用于"嵌套路由占位"的组件,负责在父组件布局中预留一个位置,由子路由匹配到的组件来渲染。
## 正文
### 为什么要用 Outlet
假设有这样的路由结构:
- `/dashboard`
- `/courses`
- `/students`
它们都共享同一个外层布局——左侧导航栏、顶部标题栏、主内容区域。如果不使用 `Outlet`,每个页面组件都要重复写一遍布局结构。
有了 `Outlet`,可以把公共布局抽到一个**父路由组件**中,子页面内容自动渲染到 `Outlet` 位置,不需要重复代码。
> 💡 **想一想**:如果每个子页面都自己写侧边栏和顶栏,当侧边栏需要修改时,需要改几个文件?用了 `Outlet` 后又需要改几个?
### 路由结构对比
```mermaid
graph TB
subgraph "不使用 Outlet"
A1[LoginPage] --> B1[浏览器]
A2[DashboardPage] --> B1
A3[CoursesPage] --> B1
A4[StudentsPage] --> B1
end
subgraph "使用 Outlet"
Layout[Layout 父组件
header + aside + Outlet] --> B2[浏览器]
subgraph "Layout 内部"
H[]
S[