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

【React篇】简述React-Router 的实现原理及工作方式

React Router 路由的基础实现原理分为两种,如果是切换 Hash 的方式,那么依靠浏览器 Hash 变化即可;如果是切换网址中的 Path,就要用到 HTML5 History API 中的 pushState、replaceState 等。在使用这个方式时,还需要在服务端完成 historyApiFallback 配置。

在 React Router 内部主要依靠 history 库完成,这是由 React Router 自己封装的库,为了实现跨平台运行的特性,内部提供两套基础 history,一套是直接使用浏览器的 History API,用于支持 react-router-dom;另一套是基于内存实现的版本,这是自己做的一个数组,用于支持 react-router-native。

React Router 的工作方式可以分为设计模式与关键模块两个部分。从设计模式的角度出发,在架构上通过 Monorepo 进行库的管理。Monorepo 具有团队间透明、迭代便利的优点。其次在整体的数据通信上使用了 Context API 完成上下文传递。

在关键模块上,主要分为三类组件:第一类是 Context 容器,比如 Router 与 MemoryRouter;第二类是消费者组件,用以匹配路由,主要有 Route、Redirect、Switch 等;第三类是与平台关联的功能组件,比如 Link、NavLink、DeepLinking 等。

相关文章:

  • 【30天精通Prometheus:一站式监控实战指南】第12天:windows_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细
  • Python的第三方库OS库
  • Java关键字大冒险:深入浅出地理解Java的精髓
  • Nginx企业级负载均衡:技术详解系列(14)—— 账户认证功能
  • 用贪心算法计算十进制数转二进制数(小数部分)
  • (CPU/GPU)粒子继承贴图颜色发射
  • 408操作系统知识点——第二章 内存管理
  • 数据分析必备:一步步教你如何用Pandas做数据分析(14)
  • VMware虚拟机中Centos最小化安装后的常用配置
  • CentOS系统上安装单机版Redis教程
  • 【网络安全】Web安全基础 - 第二节:前置基础知识- HTTP协议,握手协议,Cookie及Session
  • 【退役之重学】为什么要加入多级缓存
  • PDF 转 word (优化版)
  • rest_framework_simplejwt自定义使用——登录功能
  • Hive-因精度丢失导致的 join 数据异常
  • @angular/forms 源码解析之双向绑定
  • 【EOS】Cleos基础
  • 【知识碎片】第三方登录弹窗效果
  • Android开源项目规范总结
  • css属性的继承、初识值、计算值、当前值、应用值
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Git初体验
  • Javascript Math对象和Date对象常用方法详解
  • magento 货币换算
  • Shadow DOM 内部构造及如何构建独立组件
  • spring-boot List转Page
  • Spring核心 Bean的高级装配
  • supervisor 永不挂掉的进程 安装以及使用
  • vuex 笔记整理
  • WebSocket使用
  • 翻译--Thinking in React
  • 给github项目添加CI badge
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 计算机常识 - 收藏集 - 掘金
  • 浏览器缓存机制分析
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 系统认识JavaScript正则表达式
  • 小试R空间处理新库sf
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • No resource identifier found for attribute,RxJava之zip操作符
  • ​批处理文件中的errorlevel用法
  • ### RabbitMQ五种工作模式:
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #每日一题合集#牛客JZ23-JZ33
  • (11)MATLAB PCA+SVM 人脸识别
  • (二)pulsar安装在独立的docker中,python测试
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (九)c52学习之旅-定时器
  • (三)Honghu Cloud云架构一定时调度平台
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET企业级应用架构设计系列之应用服务器