如果你在社区留言询问 React 的状态管理库用什么,那评论区的回复会直接争破头,“Redux 天下第一”“Mobx 万岁”,当然还有使用 Hooks 的 useReducer 派。但如果说起 React 路由,那毫无争议就是 React Router 了,别无二家。对于这样一个在生态中具有统治地位的常用库,我们就必须严肃对待了,因为在面试中大概率会被问到,而问的方向往往会从实现原理与工作方式两个维度去展开。这一讲我们就来具体分析下这个问题应该如何作答。
审题
其实在真实的面试中通常不会出现像标题这样的提问方式,会更细化一点,比如“它的原理是什么”“它的代码组织方式是怎样的”“它的设计模式是什么样的”“某个功能是如何实现的”,等等。我们不会去穷尽所有细化的问题,而是通过梳理脉络的方式去掌握它。这些问题实际上分为两类——what is it 和 how does it works,也就是标题中所提到的实现原理与工作方式。
首先聊一下实现原理。实现原理应该由外到内去探索,每个库的根本原理是立足于自身生态以外的。React Router 的基础原理是什么呢?这需要我们跳出 React 生态去寻求答案,也只有掌握了根本原理后才能回到 React Router 内部,去梳理它的实践方案。
其次是工作方式。工作方式的探索应该是从整体到局部的。从宏观视角挖掘 React Router 的架构设计模式,比如 React Router 内部的模块有哪