- Objective: 共享布局
- Breadcrumb:
# 概念阐释
## 语义
react中的嵌套路由是为了让子集页面的内容显示在父级页面中。这样做的最大好处是在父级组件中设置**共享**的布局或导航结构,而子级路由则负责填充具体的内容。这种方法避免了在每个子级页面中重复相同的布局代码。
## 语法
```js
// 父级路由组件
function App() {
return (
<Route path="users" element={<Users />}>
<Route path=":userId" element={<UserDetail />} />
</Route>
); }
// Users页面占位符
import { Link, Outlet } from 'react-router-dom';
function Users() {
return (
<div>
<h1>Users</h1>
{/* 其他用户列表相关内容 */}
<Outlet /> {/* 占位符,用于渲染子路由 */}
</div> );
}
```
- 嵌套的父级要写成`<Route path="" element={}>...</Route>`
- User 页面占位符`Outlet`
# 实例
```js
//App.js 在类别页面展示 Category 页面内容,路径为动态路由
<Route path="categories" element={<Categories />} >
<Route path=":name" element={<Category />} />
</Route>
```
```js
// Categories.js 在Categories页面中设置占位符
import { Link, Outlet } from 'react-router-dom';
export default function Categories () {
const categories = useSelector(selectCategories)
return (
<main>
<h1>Categories</h1>
<ul>
// categories目录,concepts/javascript/html
</ul>
<Outlet/>
</main>
)
}
```
# 相关内容
# 参考资料
- [outlet-React Router](https://beta.reactrouter.com/en/main/components/outlet)
- 本地文件夹:react_router_v6_lession_starting_code
- App.js
- Categories.js