- 原文地址:All About React Router 4
- 原文作者:BRAD WESTFALL
- 译文出自:掘金翻译计划
- 本文永久链接:github.com/xitu/gold-m…
- 译者:undead25
- 校对者:sunui、LouisaNikita
关于 React Router 4 的一切
我在 React Rally 2016 大会上第一次遇到了 Michael Jackson,不久之后便写了一篇 an article on React Router 3。Michael 与 Ryan Florence 都是 React Router 的主要作者。遇到一位我非常喜欢的工具的创建者是激动人心的,但当他这么说的时候,我感到很震惊。“让我向你们展示我们在 React Router 4 的想法,它的方式是截然不同的!”。老实说,我真的不明白新的方向以及为什么它需要如此大的改变。由于路由是应用程序架构的重要组成部分,因此这可能会改变一些我喜欢的模式。这些改变的想法让我很焦虑。考虑到社区凝聚力以及 React Router 在这么多的 React 应用程序中扮演着重要的角色,我不知道社区将如何接受这些改变。
几个月后,React Router 4 发布了,仅仅从 Twitter 的嗡嗡声中我便得知,大家对于这个重大的重写存在着不同的想法。这让我想起了第一个版本的 React Router 针对其渐进概念的推回。在某些方面,早期版本的 React Router 符合我们传统的思维模式,即一个应用的路由“应该”将所有的路由规则放在一个地方。然而,并不是每个人都接受使用嵌套的 JSX 路由。但就像 JSX 自身说服了批评者一样(至少是大多数),许多人转而相信嵌套的 JSX 路由是很酷的想法。
如是,我学习了 React Router 4。无可否认,第一天是挣扎的。挣扎的倒不是其 API,而更多的是使用它的模式和策略。我使用 React Router 3 的思维模式并没有很好地迁移到 v4。如果要成功,我将不得不改变我对路由和布局组件之间的关系的看法。最终,出现了对我有意义的新模式,我对路由的新方向感到非常高兴。React Router 4 不仅包含 v3 的所有功能,而且还有新的功能。此外,起初我对 v4 的使用过于复杂。一旦我获得了一个新的思维模式,我就意识到这个新的方向是惊人的!
本文的意图并不是重复 React Router 4 已经写得很好的文档。我将介绍最常见的 API,但真正的重点是我发现的成功模式和策略。
对于本文,以下是一些你需要熟悉的 JavaScript 概念:
- React (无状态)函数组件
- ES2015 箭头函数 以及它们的“隐式返回”
- ES2015 解构
- ES2015 模板字符串
如果你喜欢跳转到演示区的话,请点这里:
查看演示
新的 API 和新的思维模式
React Router 的早期版本将路由规则集中在一个位置,使它们与布局组件分离。当然,路由可以被划分成多个文件,但从概念上讲,路由是一个单元,基本上是一个美化的配置文件。
或许了解 v4 不同之处的最好方法是用每个版本编写一个简单的两页应用程序并进行比较。示例应用程序只有两个路由,对应首页和用户页面。
这里是 v3 的:
import { Router, Route, IndexRoute } from 'react-router'
const PrimaryLayout = props => (<div className="primary-layout"><header>Our React Router 3 App</header><main>{props.children}</main></div>
)
const HomePage =() => <div>Home Page</div>
const UsersPage = () => <div>Users Page</div>
const App = () => (<Router history={browserHistory}><Route path="/" component={PrimaryLayout}><IndexRoute component={HomePage} /><Route path="/users" component={UsersPage} /></Route></Router>
)