其实在我思考react-router的用处时候,我有些愣住。html
这不是理所固然的吗!react-router能够是组件路由啊,它能够,额,它能够...前端
在不清楚react-router的用处的时候,能够先假设没有react-router会怎样。那么,咱们编写一个复杂应用会有什么改变吗?react
因为复杂应用通常具备多个页面,在没有react-router的状况下进行页面跳转,必须本身监听history的变化,以后渲染对应组件。git
整体来讲,固然能够解决问题,可是本身实现很不优雅并且很麻烦。具体情形能够参照:react-router简介。github
所以,咱们有了一个共同的需求。于时,前端各类框架中都可是了相似的router解决方案。在react框架中,react-router诞生,目的就是解决复杂应用中的路由改变致使的组件渲染问题。浏览器
接下来,咱们提到的react-router都是指React-Router 4。react-router
组件名称 | 介绍 |
---|---|
Router | 路由容器组件,一般使用其中的BrowserRouter组件 |
Route | 路由组件,其中path规定渲染组件路径(匹配的组件都会渲染),exact规定精准匹配 |
Switch | 路由容器组件,可是只渲染第一个匹配的组件 |
Redirect | 重定向路由组件 |
Prompt | 提示路由组件 |
Link | 至关于a标签,跳转 |
NavLink | 至关于a标签,提供额外的样式 |
withRouter | 高阶组件,给须要路由参数的组件传递路由参数 |
成员 | 类型 | 介绍 |
---|---|---|
history | 属性 | Router组件的属性,一般指定createBrowserHistory方法生成的对象 |
createBrowserHistory | 方法 | 生成Browser history, import { createBrowserHistory } from "history";const history = createBrowserHistory(); |
location | 属性 | 路由参数对象,其中有开发者定义的参数 |
match | 属性 | path:match.path 是为路由编写的路径,用于匹配路径模式。用于构建嵌套的 ; match.url 是浏览器 URL 中的实际路径。URL 匹配的部分。 用于构建嵌套的 ; 在浏览器中访问 /users/5,那么 match.url将是 "/users/5" 而 match.path 将是 "/users/:userId"; |
generatePath | 方法 | 路由跳转generatePath("/user/:id/:entity(posts|comments)", {id: 1,entity: "posts"}); |
推荐使用react官方文档介绍的代码分割解决方案:代码分割框架
推荐在路由组件的生命周期内操做ide
解决方案推荐:post