React-router使用
介绍
react-router被分为以下几部分:
react-router是浏览器和原生应用中的通用部分。
react-router-dom是用于浏览器的。
react-router-native是用于原生应用的。
react-router是核心部分。react-router-dom提供了浏览器使用需要的定制组件。react-router-native则专门提供了在原生移动应用中需要用到的部分。
安装
开发web引用只需要安装react-router-dom。
npm install react-router-dom --save
三个props
history
History是React Router的两大重要依赖之一,在不同的JavaScript环境中,history以多种形式实现了对于session历史的管理。
history对象通常会具有以下属性和方法:
length- number类型,表示history堆栈的数量。action- string类型,表示当前的动作。比如pop、replace或push。location- object类型,表示当前的位置。push(path, [state])- function类型,在history堆栈顶加入一个新的条目。replace(path, [state])- function类型,替换在history堆栈中的当前条目。go(n)- function类型,将history堆栈中的指针向前移动n。goBack()- function类型,等同于go(-1)。goForward()- function类型,等同于go(1)。block(promt)- function类型,阻止跳转。
match
match对象包含了<Route path>如何与URL匹配的信息。match对象包含以下属性:
params- object类型,表示路径参数,通过解析URL中动态的部分获得的键值对。isExact- 为true时,整个URL都需要匹配。path- string类型,用来做匹配的路径格式。url- string类型,URL匹配的部分。
获取match对象:
在Route component中,以
this.props.match方式。在Route render中,以
({ match }) => ()方式。在Route children中,以
({ match }) => ()方式。
location
location是指当前的位置,下一步的位置,或者之前所在的位置。location的属性:
pathname- string类型,URL路径。search- string类型,URl中查询字符串。hash- string类型,URL的hash分段。state- string类型,表示location中的状态,只会出现在browser history和memory history的环境里。
获取location对象的方式:
在Route component中,以
this.props.location的方式获取。在Route render中,以
({ location }) => ()的方式获取。在Route children中,以
({ location }) => ()的方式获取。在withRouter中,以
this.props.location的方式获取。
路由组件
Router
针对不同功能和平台,有集中不同的子类组件:
<BrowserRouter>浏览器的路由组件<HashRouter>URL格式为Hash路由组件<MemoryRouter>内存路由组件<NativeRouter>Native的路由组件<StaticRouter>地址改变的静态路由组件
BrowserRouter组件
BrowserRouter主要用于浏览器中,也就是web应用中。当点击程序中的一个连接之后,BrowserRouter就会找出与这个URL匹配的Route,并将对应的组件渲染出来。BrowserRouter是用来管理组件的,应用程序的组件作为它的子组件而存在。
BrowserRouter组件提供的属性:
basename- string类型,路由器 的默认根路径。forceRefresh- bool类型,在导航的过程中整个页面是否刷新。getUserConfirmation- function类型,当导航需要确认时执行的函数。默认是:window.confirm。keylength- number类型,location.key的长度。默认是6。children- node类型,渲染单一子组件。
HashRouter
HashRouter使用的URL的hash来保持UI和URL的同步。使用hash的方式记录导航历史不支持location.key和location.state。跟BrowserRouter类似,也有basename、getUserConfirmation、children属性,而且是一样的。
MemoryRouter
主要用在ReactNative这种非浏览器的环境中,因此直接将URL的history保存在了内容中。StaticRouter主要用于服务器端渲染。
Route组件
<Route>组件是react router的最重要的组件,当location与Route的path匹配时渲染Route中的Component。如果多个Route匹配,那么这些Route的Component都会被渲染。
Route组件的属性:
path- 字符串类型,它的值就是用来匹配url的。component- 它的值是一个组件,在path匹配成功之后会渲染这个组件。exact- 指明这个路由是不是排他匹配。strict- 指明路径只匹配以斜线结尾的路径。
可以代替component属性的属性:
render- function类型,Route会渲染这个function的返回值,可以添加一些副作用。children- 即使没有匹配路径的时候,也总是会渲染。我们可以根据match参数来决定匹配的时候渲染什么,不匹配的时候渲染什么。
所有路由中指定的组件将被传入以下三个props:location、match、history。
Link组件
使用<Link>可以在React应用的不同页面之间跳转,只会加载页面里和当前url可以匹配的部分。<Link>组件需要用到to属性,用来指明目标组件的地址,地址可以是一个字符串,也可以是一个location对象。
replace属性设置为true时,点击链接后将使用新地址替换掉访问历史记录里面的原地址。设置为false时,点击链接后将在原有访问历史的基础上添加一个新纪录。
NavLink是一个特殊的Link,可以使用activeClassName来设置Link被选中时被附加的class,使用activeStyle来配置被选中时应用的样式。exact属性要求路径完全匹配才会附加class和style。
Redirect组件
当这个组件被渲染时,location会被重写为Redirect的to制定到新location。它的一个用途是登陆重定向,比如用户在点击登录按钮并通过验证之后,将页面跳转到个人主页。
Switch组件
渲染匹配地址(location)的第一个<Route>或者<Redirect>。相反的,每一个包含匹配地址的(location)的<Route>都会被渲染。

React-router使用的更多相关文章
- [Redux] Filtering Redux State with React Router Params
We will learn how adding React Router shifts the balance of responsibilities, and how the components ...
- [转] React Router 使用教程
PS:react-route就是一个决定生成什么父子关系的组件,一般和layout结合起来,保证layout不行,内部的子html进行跳转 你会发现,它不是一个库,也不是一个框架,而是一个庞大的体系. ...
- [Redux] Navigating with React Router <Link>
We will learn how to change the address bar using a component from React Router. In Root.js: We need ...
- [Redux] Adding React Router to the Project
We will learn how to add React Router to a Redux project and make it render our root component. Inst ...
- React Router基础使用
React是个技术栈,单单使用React很难构建复杂的Web应用程序,很多情况下我们需要引入其他相关的技术 React Router是React的路由库,保持相关页面部件与URL间的同步 下面就来简单 ...
- 最新的chart 聊天功能( webpack2 + react + router + redux + scss + nodejs + express + mysql + es6/7)
请表明转载链接: 我是一个喜欢捣腾的人,没事总喜欢学点新东西,可能现在用不到,但是不保证下一刻用不到. 我一直从事的是依赖angular.js 的web开发,但是我怎么能一直用它呢?看看最近火的一塌糊 ...
- react router 4.0以上的路由应用
thead>tr>th{padding:8px;line-height:1.4285714;border-top:1px solid #ddd}.table>thead>tr& ...
- React Router 使用教程
一.基本用法 React Router 安装命令如下. $ npm install -S react-router 使用时,路由器Router就是React的一个组件. import { Router ...
- 关于react router 4 的小实践
详细代码栗子:https://github.com/wayaha/react-dom-CY clone然后 npm install npm start 分割线 1.这个项目使用create-react ...
- React Router 4.x 开发,这些雷区我们都帮你踩过了
前言 在前端框架层出不穷的今天,React 以其虚拟 DOM .组件化开发思想等特性迅速占据了主流位置,成为前端开发工程师热衷的 Javascript 库.作为 React 体系中的重要组成部分:Re ...
随机推荐
- Dubbo学习系列之十二(Quartz任务调度)
Quartz词义为"石英"水晶,然后聪明的人类利用它发明了石英手表,因石英晶体在受到电流影响时,它会产生规律的振动,于是,这种时间上的规律,也被应用到了软件界,来命名了一款任务调度 ...
- Provide Several View Variants for End-Users 为最终用户提供多个视图变体
In this lesson, you will learn how to provide several customized variants of the same View, and allo ...
- HTML连载55-网易注册界面实战之input填充
一.又学一招:想要让两个盒子高度对齐,那么让他们浮动起来 <!DOCTYPE html> <html lang="en"> <head> < ...
- dedecmsV5.7 百度编辑器ueditor 多图上传 在线管理 排序问题
问题:dedecms后台百度编辑器ueditor的多图上传-在线管理的图片排序有问题,想把这个顺序调成按照文件修改时间倒序来展示 解决方法: 1.打开/include/ueditor/php/acit ...
- ACM课内练习_1
题意很简单就是一个一个素数因子只有2,3,5,7的整数,让你求它的约束的个数(暴力会超时),一开始的思路是先计算2,3,5,7这四个素数因子的个数,求出来之后想了很久没有想出他们个数和约束个数之间的数 ...
- Pro Micro
选择这块Arduino板主要是因为它便宜(淘宝上20元左右搞定),引脚相对较多,体积小,而且其使用的处理器核心ATmega32U4(兼容Arduino Leonardo)可用于模拟HID设备,可以配合 ...
- Java内存分析工具MAT
MAT是一个强大的内存分析工具,可以快捷.有效地帮助我们找到内存泄露,减少内存消耗分析工具.内存中堆的使用情况是应用性能监测的重点,而对于堆的快照,可以dump出来进一步分析,总的来说,一般我们对于堆 ...
- SqlException:ConnectionTimeout Expired. The timeout period elapsed during the post-login phase
linux系统部署.netcore程序后,访问某台sqlserver 2008 R2数据库 Connection Timeout Expired. The timeout period elapsed ...
- pip安装插件报错。
报错: Cannot unpack file C:\Windows\TEMP\pip-unpack-4mbfczpj\simple (downloaded from C:\Windows\TEMP\p ...
- excel中添加下拉候选
这里简单记录下如何在Excel2013中添加下拉候选. 首先有个思路是,下拉候选也就意味着数据被限制在一个范围之内,因此应该联想到数据验证相关的设置. 选中单列或单元格,在[数据]下的[数据验证]中选 ...