🎙 欢迎来到《前端达人 · React播客书单》第 21 期。
今天我们不讲 Hook,来拆解前端开发中另一个高频组件:React Router 的进阶导航模式。
你可能用过 <Link>
或 <Route>
,但当项目变得复杂,你会发现:
本期就带你搞懂三大核心功能: 👉 路由参数 useParams👉 嵌套路由 children + Outlet👉 默认子路由 index: true
👇 举个例子:
/products/123
/users/bob
其中的 /123
或 /bob
就是URL 参数,用于展示不同的内容页。
在配置中我们这样写:
{
path: '/products/:id',
element: <ProductPage />
}
/:id
就是参数定义,**:id 就是变量名**。
用 React Router 提供的 Hook:
import { useParams } from 'react-router-dom';
type Params = { id: string };
function ProductPage() {
const { id } = useParams<Params>();
const productId = parseInt(id); // 类型转换(因为是 string)
// 根据 id 拉数据、渲染组件
}
📌 注意:所有 URL 参数默认都是字符串类型。
很多中大型页面都有父子结构:
/settings
→ 设置页容器/settings/profile
→ 用户资料/settings/security
→ 安全设置页在配置中可以这样做:
{
path: '/settings',
element: <SettingsLayout />,
children: [
{ path: 'profile', element: <ProfilePage /> },
{ path: 'security', element: <SecurityPage /> }
]
}
在 SettingsLayout
组件中加入一个 <Outlet />
,用来“占位”子页面内容。
function SettingsLayout() {
return (
<>
<Sidebar />
<Outlet />
</>
);
}
💡 所以嵌套路由 = “父路由渲染公共布局 + 子路由通过 Outlet 渲染实际内容”。
再看 /settings
这个页面,当用户访问 /settings
而不带任何子路径时,我们希望默认展示“设置概览页”。
React Router 提供了 index: true
这种方式:
{
index: true,
element: <SettingsOverview />
}
📌 写在 children
中,不需要 path
,表示“当匹配父路径但没有其他子路由时”的默认页面。
模块 | 核心用途说明 |
---|---|
useParams() | 从 URL 中提取参数(字符串类型) |
嵌套路由 | 用 children 构建父子结构 + <Outlet /> 渲染内容 |
Index 路由 | 默认子路由,提升首次访问体验 |
建议你在项目中试试这个练习:
/users
列表页/users/:id
UserLayout
index: true
作为默认用户信息页你会实际体验到这三种导航模式是如何协作的。
📦 下一期我们来讲「React Router 的懒加载与错误边界」:让你的路由更丝滑、更健壮,别错过!
#React #React播客 #前端播客 #前端达人 #TypeScript