React Router 入门教程(TypeScript + Vite)
前言
React Router 是 React 生态里最常用的前端路由方案之一。它让你把应用拆成多个“页面组件”,并根据浏览器地址(URL path)渲染不同内容。
本教程会在同一个最小项目里完成以下目标:
- 用 Vite 初始化 React + TypeScript
- 配置 React Router v6 的路由(
Routes/Route) - 使用
Link做页面间导航(不刷新页面) - 演示参数路由(例如
/users/:id),并用useParams读取参数
你可以用它作为 React 入门(组件 + Hooks)的延伸:路由就是把“组件显示逻辑”按 URL 组织起来。
依赖
创建项目
1 | npm create vite@latest react-getting-started-router-ts -- --template react-ts |
安装路由
1 | npm i react-router-dom |
实现
BrowserRouter
编辑 src/main.tsx,把 <App /> 包在 BrowserRouter 里:
1 | // src/main.tsx |
要点:
BrowserRouter负责监听 URL 变化并把当前路径映射到对应路由- 放在入口处最简单:
App只负责“声明路由”
路由配置
新建/修改 src/App.tsx,使用 Routes/Route 声明路由:
1 | // src/App.tsx |
要点:
Route element={<RootLayout />}用于做“公共布局”(导航栏、外层结构等)index表示根路径/path="*"表示兜底(当前路径不匹配任何路由时跳回首页)Navigate用来进行重定向
布局(Outlet)
新建 src/layouts/RootLayout.tsx:
1 | // src/layouts/RootLayout.tsx |
Outlet 的作用是:渲染当前匹配到的子路由组件。
导航(Link)
新建 src/components/NavBar.tsx:
1 | // src/components/NavBar.tsx |
要点:
Link用来做导航,它会修改 URL 并渲染对应路由页面- 与普通
<a href="...">相比,Link不会触发整页刷新
页面与参数
Home
新建 src/pages/Home.tsx:
1 | // src/pages/Home.tsx |
About
新建 src/pages/About.tsx:
1 | // src/pages/About.tsx |
User 参数
新建 src/pages/User.tsx:
1 | // src/pages/User.tsx |
要点:
/users/:id会把:id的值注入到useParams()里- 参数路由在真实项目中常用于详情页(例如商品详情、文章详情)
验证
启动开发服务器:
1 | npm run dev |
然后做以下验证:
- 打开浏览器访问首页
/,确认能看到“首页”内容 - 点击导航里的“关于”,URL 变为
/about,页面切换到 About(不刷新) - 点击“查看用户 123”,URL 变为
/users/123,页面显示id = 123 - 访问不存在的路径(例如
/no-such-page),应重定向回/
如果你希望更直观看到路由匹配过程,可以在 User 或各页面里临时加 console.log,观察浏览器控制台输出。
扩展
你可以在入门基础上继续扩展:
- 为 404 单独写一个页面组件(不要重定向回首页)
- 加上
useSearchParams(查询参数)示例 - 实现路由懒加载:
React.lazy+ 动态导入页面组件 - 根据业务加上“权限/登录守卫”(例如在进入某些路由前检查状态)
总结
完成这篇后,你已经掌握了 React Router 入门的核心知识:
BrowserRouter:路由上下文入口Routes/Route:路由表声明RootLayout + Outlet:公共布局与子路由渲染Link:无刷新导航- 参数路由:
/users/:id+useParams
方法
Routes:声明路由匹配集合Route:单条路由规则(path+element)Navigate:重定向Outlet:渲染嵌套路由子组件Link:导航组件useParams:读取路由参数