[react-router] React-Router的实现原理是什么?

1.react-router依赖基础 - history,是一个独立的第三方js库,可以用来兼容在不同浏览器、不同环境下对历史记录的管理,拥有统一的API。具体来说里面的history分为三类:

  • HashRouter:老浏览器的history,主要通过hash来实现,对应createHashHistory()
  • BrowserRouter:高版本浏览器,通过html5里面的history,对应createBrowserHistory()
  • **MemeoryRouter:**node环境下,主要存储在memeory里面,对应createMemoryHistory()

*createHashHistory、createBrowserHistory、createMemoryHistory方法只是覆盖了某些基础公用方法,比如go(),replace(),push()等。BrowserRouter和HashRouter组件,前者使用pushState和popState事件构建路由,后者使用 hash 和 hashchange 事件构建路由。MemeoryRouter可以应用于像react native。

  1. 当url发生变化时,路由通过监听url的变化,我们不仅能直接获取和解析url路径,并且通过路由匹配,决定应该展示什么样的组件,即React组件的展示,授权路由进行控制,保证了url和视图的同步。

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论

主目录

与歌谣一起通关前端面试题

[react-router] React-Router的实现原理是什么?相关推荐

  1. 【React+ts】从零开始搭建react函数式组件+router+redux+less+sass+axios反向代理+antd(保姆式教学)

    前提 你需要准备好node.js版本不低于6.14.8 和 git 文章内容比较长(保姆级别教程),全是干货,请耐心看完 通过create-react-app脚手架搭建项目 1.第一步 注: 项目名称 ...

  2. [react] 说说react diff的原理是什么

    [react] 说说react diff的原理是什么 内存中存储两颗树,一颗树是已经渲染的树结构(Current Tree),另一颗是即将变化的树(Fiber Tree). 每次状态发生变化,会对原来 ...

  3. [react] react多个setState调用的原理是什么?

    [react] react多个setState调用的原理是什么? 同步调用多个setState,React并不会连续多次的进行更新操作,而是会将同步中的多个setState操作合成一个,只执行一次re ...

  4. RN路由-React Navigation组件5.x-基本原理(中文文档)

    ##引言 React Native路由导航,有它就够了!该文档根据React Navigation文档翻译,有些内容会根据自己的理解进行说明,不会照搬直译,若发现理解有问题的地方,欢迎大家提点!由于本 ...

  5. react遍历对象的值_React 原理之实现 createElement 和 render 方法

    前言 在 React 中,我们都知道可以写 jsx 代码会被编译成真正的 DOM 插入到要显示的页面上.这具体是怎么实现的,今天我们就自己动手做一下. 实现 createElement 方法 这个方法 ...

  6. 【React】React 详细教程

    前言 1.react与vue的对比 1.1.什么是模块化 是从代码的角度来进行分析的 把一些可复用的代码抽离为单独的模块:便于项目的维护和开发 1.2.什么是组件化 是从UI界面角度来进行分析的 把一 ...

  7. 【尚硅谷React】——React全家桶笔记

    文章目录 第1章 React简介 1.1 React的特点 1.2 引入文件 1.3 JSX 1.3.1 为什么要用JSX 1.3.2 JSX语法规则 1.4 虚拟DOM 1.5 模块与组件 1.5. ...

  8. React系列——React Context

    前言 我们先看一下React中,父子组件通信的机制,父子组件的通信是通过props进行数据的传递: 1.父组件向子组件传递数据(状态)时,是在调用子组件的时候通过参数传递给子组件,子组件通过this. ...

  9. 小谈React、React Native、React Web

    React有三个东西,React JS 前端Web框架,React Native 移动终端Hybrid框架,React Web是一个源码转换工具(React Native 转 Web,并之所以特别提出 ...

  10. 初识react(四) react中异步解决方案之 redux-saga

    回顾 初识react(一) 揭开jsx语法和虚拟DOM面纱 初识react(二) 实现一个简版的html redux.js的demo 初识react(三)在 react中使用redux来实现简版计数器 ...

最新文章

  1. SQL语句性能优化--LECCO SQL Expert
  2. mysql代理中间件_MySQL-ProxySQL中间件(二)
  3. F5 network
  4. python如何创建模块教程_Python创建模块及模块导入的方法
  5. How is CRM status filtering logic done
  6. 双指针:88. 合并两个有序数组
  7. python内置函数面向对象_Pyhton——面向对象进阶二:类的内置函数补充、描述符...
  8. 把核心代码全开源,还能做出卡别人脖子的产品吗?
  9. Idea 工具在java文件中怎么避免 import .*包
  10. LINUX下载编译SDL2
  11. 29 伪造ICMP数据包的IP层
  12. 我的Ubuntu计算机出现“黑屏”,何故?
  13. 国外计算机论文翻译,计算机论文外文翻译
  14. leetcode | 整数反转
  15. python描述对象静态特性的数据为_对于需要几个单位共同负担的一张原始凭证上的支出,应根据其他单位负担部分为其提高( )。...
  16. java工具类 - word内容文本替换
  17. 直播程序源码功能技术详解
  18. word文档加密漏洞破解方法详解
  19. 请分析计算机测色配色的缺点,测色与配色分析.doc
  20. 在Docker中运行EOS(MAC版)

热门文章

  1. 实验心得_大肠杆菌原核表达实验心得(上篇)
  2. 线性回归非线性回归_了解线性回归
  3. leetcode1020. 飞地的数量(dfs)
  4. 在大流行的世界中如何建立技术社区
  5. unity 克隆_使用Unity开发Portal游戏克隆
  6. ios 动态化视图_如何在iOS应用中使高度收集视图动态化
  7. mongo 删除节点_将生产节点/ Express Mongo App部署到AWS —反思
  8. html制作彩虹_制作彩虹
  9. BZOJ 1791 岛屿(环套树+单调队列DP)
  10. Netty 4.0 新的特性及需要注意的地方