news 2026/9/30 2:47:36

React 路由:React Router

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
React 路由:React Router

React 路由:React Router

前置:React 常用 Hooks
目标:用react-router-dom做多页面与动态参数。

引言

单页应用没有「真刷新换页」,靠URL 变化 ↔ 换一块组件。
react-router-dom负责这件事:声明路径、跳转、读动态参数。

本篇 demo:/、/about、/users/:id三页 + 顶栏导航。

动手

完整代码:react2/06-router/demo

cdreact2/06-router/demonpminstall&&npmrun dev

依赖已含react-router-dom。点顶栏 Home / About / User/7,看地址栏和内容区一起变。


1. 最小结构:BrowserRouter+Routes

import { BrowserRouter, Link, Route, Routes, useParams } from 'react-router-dom' export default function App() { return ( <BrowserRouter> <nav> <Link to="/">Home</Link> <Link to="/about">About</Link> <Link to="/users/7">User/7</Link> </nav> <Routes> <Route path="/" element={<Home />} /> <Route path="/about" element={<About />} /> <Route path="/users/:id" element={<User />} /> </Routes> </BrowserRouter> ) }
角色干什么
BrowserRouter用浏览器 History API 管 URL(最常见)
Routes根据当前路径选出要渲染的Route
Routepath+element:匹配到就渲染该组件
Link客户端跳转,不会整页刷新

BrowserRouter一般包在应用最外层(本 demo 包在App里)。


2. 用Link导航,别用<a>

<Link to="/about">关于</Link> <Link to="/users/42">用户 42</Link>
  • <Link to="...">:只改前端路由,状态还在。
  • 普通<a href="...">:整页重载,SPA 体验关掉。
  • 程序里跳转用useNavigate()(本 demo 未演示,嵌套路由篇会用到)。

3. 动态参数:/users/:id+useParams

路由声明:

<Route path="/users/:id" element={<User />} />

组件里读:

function User() { const { id } = useParams() return ( <section> <h2>用户详情</h2> <p> 动态参数 <code>id</code> = {id} </p> <Link to="/">回首页</Link> </section> ) }

打开/users/7或/users/42,id分别是"7"/"42"(字符串)。要当数字用先Number(id),并做好非法值兜底。


4. 路径怎么匹配(直觉)

path能匹配说明
/仅首页精确匹配这个路径
/about/about静态段
/users/:id/users/任意一段:id是参数名

注意:更具体的路由要写清楚;以后做「嵌套布局」时会用到<Outlet />(见后续篇)。


对照表

API用途demo
BrowserRouter启用浏览器路由包住整页
Routes/Route声明路径 ↔ 组件/、/about、/users/:id
Link声明式跳转顶栏 + 页内链接
useParams读动态段User里的id

常见坑

做法问题
用<a href>做站内跳转整页刷新,白开 SPA
忘了包BrowserRouterLink/useParams直接报错
把useParams用在Routes外、且不在匹配的路由树里拿不到参数或不符合预期
动态id当 number 直接算实际是 string,先转换

demo 在练什么

App.tsx里:

  1. 顶栏三个Link→ 切换路由
  2. 三个页面组件:Home/About/User
  3. User用useParams()显示当前id

自己改一改:加/contact,或把 User 链接改成列表map出多个 id。


运行截图

下一篇

React 数据请求:TanStack Query

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 2:47:35

Qt — Qt 网络

目录 1. 网络概述 2. UDP Socket 2.1 核心 API 概览 2.2 写一个带有界面的 Udp 回显服务器 3. TCP Socket 3.1 核心 API 概览 3.2 TCP 回显服务器 4. HTTP Client 4.1 核心 API 4.2 客户端代码编写 1. 网络概述 进行网络编程的时候&#xff0c;本质上是在编写 应用层…

作者头像 李华
网站建设 2026/9/30 2:47:16

IP地址查询:藏在近期安全事件背后的溯源线索

做安全的人都有一个体会&#xff1a;发起方最难抹掉的痕迹&#xff0c;往往不是代码里的漏洞&#xff0c;而是网络通信留下的IP地址。 2026年过去的大半年里&#xff0c;几起值得关注的安全事件都印证了这一点。无论是大规模的木马控制网络、路由劫持事件&#xff0c;还是自动…

作者头像 李华
网站建设 2026/9/30 2:47:12

深度学习系统学习-01:深度学习入门导学

什么是深度学习&#xff1f;总结&#xff1a;深度学习是机器学习的一个分支&#xff0c;其核心是通过构建多层神经网络实现自动特征提取和模式识别深度学习是干什么的&#xff1f;1.计算机视觉&#xff08;Computer Vision , CV&#xff09;(底层实现-->卷积神经网络CNN)图像…

作者头像 李华
网站建设 2026/9/30 2:46:53

2026年纺织服装AI应用展会:从柔性制造到绿色循环的七大新看点

1. 2026服装AI应用展会 2026年&#xff0c;纺织服装行业正站在智能化变革的十字路口。从面料研发到终端零售&#xff0c;AI技术正在重塑每一个环节。在今年的纺织服装AI应用展会上&#xff0c;众多创新成果集中亮相&#xff0c;勾勒出行业未来发展的清晰轮廓。本文将带你梳理本…

作者头像 李华
网站建设 2026/9/30 2:46:21

问数系统的多轮追问:指代消解、上下文裁剪与澄清策略

在企业 NL2SQL 的落地里&#xff0c;单轮问答的准确率往往不是最难的部分。真正决定它能不能被当成工具用的&#xff0c;是第二轮之后——用户不会每次都说完整&#xff0c;他会说"那这个月呢""按楼栋拆一下""算了&#xff0c;看看收缴率"。这篇…

作者头像 李华
网站建设 2026/9/30 2:46:18

免疫细胞存储的窗口期:为什么年轻免疫资源不可复刻

免疫细胞存储的窗口期&#xff1a;为什么年轻免疫资源不可复刻很多人疑惑&#xff1a;免疫细胞存储有没有最佳时间&#xff1f;年纪大了还需要存吗&#xff1f;答案的核心在于理解&#xff1a;免疫细胞的质量&#xff0c;具有不可逆的时间窗口期。人体优质免疫资源只存在于年轻…

作者头像 李华