图解 React-router 带你深入理解路由本质

Posted beidan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解 React-router 带你深入理解路由本质相关的知识,希望对你有一定的参考价值。

> 阅读源码小 tips:从整体到细节,刚开始不要太拘泥于一行代码的实现,先从整体去理解,理解好各自的关系,再去读源码。

首先,我们先不纠结于源码细节。先用最简单的话来概括一下 React-router 到底做了什么?
本质上, React-Router 就是在页面 URL 发生变化的时候,通过我们写的 path 去匹配,然后渲染对应的组件。

那么,从这句话,我们想一下如何分步骤实现:

  • 如何监听 url 的变化 ?
  • 如何匹配 path,按什么规则 ?
  • 渲染对应的组件

了解好需要实现的关键步骤,我们来将仓库源码下载下来。
接下来我们看一下 GitHub, 它使用 lerna 管理同时管理多个包.也就是Multirepo 概念。

> react-router 使用 lerna 来同时管理多个包. ( lerna 的好处特别多,对于依赖关系大,同类型的包推荐使用 lerna 来统一管理。)

image.png

image.png

核心库是 react-router. react-router-dom 是在浏览器中使用的,react-router-native是在 rn 中使用的。

如果不理解,直接看一下源码就懂了。其实 react-router-dom 只是多了下面四个组件 BrowserRouter、 Link、NavLink、HashRouter, 其他其实都是直接引用 react-router 的。

image.png

了解完多包的组织关系之后,我们回到前面如何实现 react-router 的 3个关键步骤,如下:

  • 如何监听 url 的变化 ?
  • 如何匹配 path
  • 渲染对应的组件

我们不自己来实现,直接看源码,站在巨人的肩膀上来学习

以上是关于图解 React-router 带你深入理解路由本质的主要内容,如果未能解决你的问题,请参考以下文章

3000字带你深入理解二叉树(图解剖析)

图文并茂带你深入理解三次交换之单臂路由

图文并茂带你深入理解三次交换之三层交换机

说到Jetpack路由组件熟悉的只有ARouter框架?今天带你深入理解功能强大的Navigation架构

说到Jetpack路由组件熟悉的只有ARouter框架?今天带你深入理解功能强大的Navigation架构

深入浅出图解计算机网络 之 路由选择协议