当前位置: 首页 > news >正文

react-router 的原理

React Router 的核心原理:Hash 路由 & History 路由

React Router 本质上是前端实现路由跳转,不刷新页面,同时实现页面组件切换。

浏览器本身有两种方式能做到:

① Hash 路由(#/path)

例如:

https://example.com/#/home

通过监听:

window.onhashchange

切换 URL 中 # 后面的部分,不会触发页面刷新。

② History 路由(/home)

使用浏览器的 HTML5 history API:

history.pushState()
history.replaceState()
window.onpopstate

同样可以改变 URL,但不刷新页面。

React Router 的根本做法总结一句话:

监听 URL 变化(hash/popstate) → 根据 pathname 匹配对应组件 → 渲染该组件

就是这么简单明了。

React Router 原理分解

1. 用 Router 组件监听 URL

React Router 内部有两种 router:

BrowserRouter(使用 history API)

监听:

window.onpopstate = () => 更新页面

修改路由:

history.pushState({}, '', '/about')
HashRouter(使用 hash)

监听:

window.onhashchange = () => 更新页面

修改 hash:

window.location.hash = '#/about'
2. Router 保存当前路径(location)

每当 URL 改变:

  • Router 读取当前的 window.location.pathname 或 hash

  • 保存成自己的 location 状态

例如:

{ pathname: '/home' }

Router 就会把它挂到 React Context 上,让所有子组件都能访问。

3. Routes / Route 做“路径匹配”

例如:

<Routes><Route path="/home" element={<Home />} /><Route path="/user/:id" element={<User />} />
</Routes>

Routes 会拿到 Router 提供的 location.pathname
然后用内部的“路径匹配器”去匹配:

"/home" ——> 匹配 Home 组件
"/user/123" ——> 匹配 User 组件

匹配成功,就返回对应 component。

4. Route element 被渲染出来(最终输出 UI)

匹配到的组件会返回 render 出 React 节点:

<Router><Routes>匹配到什么 Route,就渲染它对应的 element</Routes>
</Router>

组件切换了,但是页面没有刷新。

<Link to="/home">首页</Link>

底层相当于:

history.pushState({}, '', '/home')

就是修改 URL。

navigate('/home');

底层也是 pushState 或 hash。

修改 URL → 路由监听到 → 路径匹配 → 渲染新组件

用一张图总结整个流程

用户点击 Link 或 navigate()↓
修改 URL(pushState / hash)↓
Router 监听到 URL 改变↓
更新 location 状态↓
Routes 根据 path 做匹配↓
匹配到 Route 后渲染元素↓
React 刷新组件(无刷新切换页面)

核心就是:URL 改了 → Router 匹配 → component 切换。

总结

react-router 实现前端路由的核心:利用浏览器的 History API 或 Hash 机制,监听 URL 变化,再用路径匹配渲染对应组件,而不刷新页面。

http://www.jsqmd.com/news/52304/

相关文章:

  • 2025年气流流行检测仪厂家权威推荐榜单:气流流型检测仪‌/水雾发生器‌/醇类气流流型检测仪源头厂家精选
  • 2025年下半年北京健康服务、康养旅游、全家福计划、朋友圈计划服务商综合推荐指南:专业选择与权威分析
  • 2025年售后完善的大胖瓶前置过滤器排名前十
  • 2025 年 11 月铣床厂家权威推荐榜:立式铣床/摇臂铣床/炮塔铣床/数控铣床/精密铣床/多功能铣床,高精度加工与稳定性能深度解析
  • 2025 年 11 月幕墙精致钢实力厂家权威推荐榜:异形/镀锌/Q345/隐框幕墙精致钢,钢板拼接/直出/富锌底漆/T型幕墙/氟碳喷涂精致钢,专业工艺与耐久品质深度解析
  • 2025 年声测管厂家最新推荐榜,技术实力与市场口碑深度解析,密封抗扭与供货能力兼具的优质品牌检测声测管/桥梁桩基声测管/螺旋声测管/钳压式声测管公司推荐
  • 2025年靠谱的鸿运火锅底料礼盒装口碑排行榜单
  • Apipost和Apifox的收费标准
  • 2025年工业速冻冷库生产厂家推荐排行
  • Apipost 对比 Apifox
  • 2025 年 11 月轮转印刷机厂家权威推荐榜:间歇式/凸版间歇式/胶印间歇式/PS版间歇式轮转印刷机,不干胶轮转机/商标不干胶轮转机高效印刷解决方案
  • 202评价高的5年权威的北京个体户核定征收服务怎么选
  • 2025年玉米棒速冻隧道公司口碑推荐榜单
  • Apipost和Apifox哪个更适合团队使用?
  • 2025年全自动卫生纸加工设备排名
  • 2025年十大值得推荐的固化剂源头厂家,专业测评精选固化剂实
  • 2025年后勤保障消防车供应商口碑推荐榜
  • 2025 年 11 月传感器厂家权威推荐榜:覆盖压力传感器、温度传感器、光电传感器的智能感知与精准测量专家精选
  • 2025年地下室垃圾车源头厂家排行
  • 国际商标去哪里购买?2025 最新测评出炉,这 3 家零风险闭眼选
  • 2025 年 11 月预埋件厂家权威推荐榜:幕墙/热镀锌/后置/槽式/冲压/焊接/套芯/钢结构/混凝土预埋件,专业工艺与稳固性能深度解析
  • 国际商标购买方案指南:2025 优选 TOP5 平台测评 + 避坑攻略 + 流程拆解
  • 2025年PPH储罐厂家权威推荐榜单:PP储酸罐‌/PP储液罐‌/PPH缠绕储罐源头厂家精选
  • 2025年高端汽车窗膜制造商哪家值得信赖
  • 2025年重型数控机床优质厂家口碑推荐榜
  • 国际商标购买正规平台 2025 实测:3 大高安全平台推荐 + 避坑指南
  • 2025 年 11 月喷涂加工厂家实力推荐榜:UV喷涂/丝印工艺/金属漆/橡胶漆/肤感UV/PU涂料/自动线加工/美容仪外壳/吹风机外壳/塑胶喷涂加工,精选优质表面处理解决方案
  • 国际商标注册代理机构 权威测评:2025 头部机构实力排行 + 适配指南
  • 2025年四导轨数控车床产品口碑推荐
  • 2025年大件搬运品牌怎么选