当前位置:嗨网首页>书籍在线阅读

07-切换到React Router

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

12.5 切换到React Router

之前几章中构建的路由器针对浏览器内的路由处理进行了优化,但其设计并没有考虑服务器端渲染。深入研究和了解React能做什么主要靠自己动手去构建,而不只是安装一个第三方库,我希望能让读者了解如何以不同的方式使用组件。

这个路由器对于示例应用这样相对简单的需求可能已经够用了,但它在某些方面可能还有所欠缺。它有一个非常简陋的API,如果可以支持路由钩子(路由之间的转换)、middleware(可以应用于多个路由的逻辑)之类的就好了。随着逐步深入React服务器端渲染,将需要更多功能,例如,能够根据请求URL生成要渲染的组件树。这就是为什么要转而使用React Router V3。

React Router似乎是React中最常用和最先进的React路由解决方案,它在GitHub上拥有强大的追随者和社区贡献者,并经历了几次重大修订。

在撰写本书时,React Router的最新主版本是4。当前还在更新,有可能在你阅读本书时它已经被新的主版本所取代。我们将使用版本3,因为它的API和之前创建的路由器非常类似,应该只需要做很少的修改就能使用。之所以使用它还因为它是由React开源社区持续开发的一种健壮的技术,它比之前的那个简单的路由器强多了,甚至已经超出了当前的需求。

选择第三方库与自己造轮子

切换到React Router而不是坚持自己的解决方案的另一个原因是,React Router更适合开发者及其团队所处的业务环境。开发者通常会选择React Router这样的开源解决方案而不是自己编写。这是因为,根据开发者的需求,构建和维护问题的健壮解决方案所需要的时间有可能值得,也有可能不值得。当涉及外部依赖关系时,在“自建还是购买”的决策上进行抉择可能很棘手。我这里的意见是牢记这两件事情:(1)不必因为别人用什么就用什么;(2)构建自己的解决方案需要做的工作通常要比初期工作多得多——维护才是最为耗时的事。拥有大量开源贡献者的大型社区通常会在自建者遇到bug之前就捕获到这些bug。

值得注意的是,React Router是一项非常重要的技术,我们这里只是简单地了解其核心能力。这个项目包含了许多场景的多种路由特性。最新的主版本(撰写本书时是4)甚至包含了React Native平台的路由解决方案。使用和开发React Router的大量开发者助力这个项目,使其变得非常有用,但它也有缺点,就是主版本之间有时会有巨大的变化。正是由于这个原因,加上版本3和我们从头构建的路由器的相似之处,我们不会使用最新版本的React Router。如果想要使用最新版本的React Router,我在自己的博客中有一篇文章中介绍了React 16与React Router v4的使用。我还注意到,尽管API在不同版本的React Router之间发生了变化,大多数相同的概念仍然适用——只需在转换时将功能重新映射到新的API即可。