关于react-router-dom的一些记录
最近在做的新项目使用的技术栈是 React+AntDesign
,本篇主要记录在实践过程中使用react-router-dom
时遇到的一些方法的总结。
1、HashRouter
和BrowserRouter
react-router-dom
依赖于react-router
,主要用于浏览器环境下的开发。它的路由基本有2个路由容器即HashRouter
和BrowserRouter
,HashRouter
使用的是hashchange的方法,浏览的url中包含#
,BrowserRouter
使用的原理是H5的history API来使url发生改变。本文主要以HashRouter
为例。
import { HashRouter as Router, Route, Switch } from "react-router-dom";
import Join from "./Join";
import Success from "./Success";
import Login from "../Login";
import Home from "../Home";
<Router>
<Switch>
<Route exact path='/join' component={Join} />
<Route exact path='/success' component={Success} />
<Route exact path='/login' component={Login} />
<Home />
</Switch>
</Router>
2、Switch
只渲染第一个匹配到的路由组件,Switch下的子节点只能是 Route 或 Redirect 元素。只有与当前访问地址匹配的第一个子节点才会被渲染。
3、Route
Route 主要用于控制路径对应显示的组件,编程式导航三个路由属性是:
exact
:精准匹配,不再向下匹配
path
:标识路由的路径
component
:路径对应显示的组件
4、Link和NavLink
路由导航:NavLink区别在于有一个属性用来显示跳转选中的样式。它具有:
activeStyle
:可以直接写选中的样式activeClassName
:激活时应用的样式名,默认是active
import { Link } from "react-router-dom";
<Link to="/about">About</Link>
to
:链接到的路径或位置replace
:替换路径
5、withRouter
withRouter可以包装任何自定义组件,将react-router 的 history,location,match 三个对象传入。
无需一级级传递react-router 的属性,当需要用的router 属性的时候,将组件包一层withRouter,就可以拿到需要的路由信息。
主要用于子组件。
6、match
用于获取路由的参数信息
console.log(this.props.match.params.id)
params
:object 路径参数,通过解析 URL 中的动态部分获得键值对isExact
:为 true 时,整个 URL 都需要匹配path
:用来匹配的路径模式url
: 匹配的链接
7、location
用来存放当前的路径的信息
const { pathname } = this.props.location;
pathname
:url路径search
:查询字符串hash
:hash
8、history
可以用来手动跳转到页面
this.props.history.push('/user/list')
关于react-router-dom的一些记录的更多相关文章
- React 实践记录 03 React router
Introduction 本文主要参考了react router 的官方文档. React Router是一套完整的配合React的路由解决方案,可能你已经知道前端路由,或者知道后端有路由的概念,如下 ...
- React Router 4.x 开发,这些雷区我们都帮你踩过了
前言 在前端框架层出不穷的今天,React 以其虚拟 DOM .组件化开发思想等特性迅速占据了主流位置,成为前端开发工程师热衷的 Javascript 库.作为 React 体系中的重要组成部分:Re ...
- React Router教程
React Router教程 React项目的可用的路由库是React-Router,当然这也是官方支持的.它也分为: react-router 核心组件 react-router-dom 应用于浏览 ...
- React Router学习
React Router教程 本教程引用马伦老师的的教程 React项目的可用的路由库是React-Router,当然这也是官方支持的.它也分为: react-router 核心组件 react-ro ...
- [转] React Router 使用教程
PS:react-route就是一个决定生成什么父子关系的组件,一般和layout结合起来,保证layout不行,内部的子html进行跳转 你会发现,它不是一个库,也不是一个框架,而是一个庞大的体系. ...
- React虚拟DOM具体实现——利用节点json描述还原dom结构
前两天,帮朋友解决一个问题: ajax请求得到的数据,是一个对象数组,每个对象中,具有三个属性,parentId,id,name,然后根据这个数据生成对应的结构. 刚好最近在看React,并且了解到其 ...
- 关于react router 4 的小实践
详细代码栗子:https://github.com/wayaha/react-dom-CY clone然后 npm install npm start 分割线 1.这个项目使用create-react ...
- react虚拟dom diff算法
react虚拟dom:依据diff算法 前端:更新状态.更新视图:所以前端页面的性能问题主要是由Dom操作引起的,解放Dom操作复杂性 刻不容缓 因为:Dom渲染慢,而JS解析编译相对非常非常非常快! ...
- React Router API文档
React Router API文档 一.<BrowserRouter> 使用HTML5历史记录API(pushState,replaceState和popstate事件)的<Rou ...
- 笔记react router 4(二)
上一篇我们提到react router 4的dom特性.那么这一次,我们来说一说4.X中的路由组件嵌套. 用过3.X的同学应该知道,路由组件的嵌套(即,路由的配置)方式是通过给<Route> ...
随机推荐
- python2与python3 的pip的安装
python2的pip安装 $ sudo apt-get install python-pip python2安装第三方包 $ sudo pip install packagename python3 ...
- Python【每日一问】16
问: [基础题]TCP/UDP/HTTP协议区别 [提高题]在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数, ...
- Java NIO学习与记录(七): Reactor单线程模型的实现
Reactor单线程模型的实现 一.Selector&Channel 写这个模型需要提前了解Selector以及Channel,之前记录过FileChannel,除此之外还有以下几种Chann ...
- 【Alpha】Phylab 展示博客
目录 Phylab Alpha 展示博客 一.团队简介 二.项目目标 2.1 典型用户 2.2 功能描述 2.3 用户量 三.项目发布与展示 3.1 新功能 3.2 修复缺陷 3.3 问题与限制 3. ...
- 状态机模式中的Task与对象池
Task 抽象带来Task 首先,假设我们有这么一段逻辑:收到一个参数,先校验格式是否正确,再提取相关的参数出来,执行我们的事务,然后构建结果并返回.伪代码如下: /** * 一个engine类 ** ...
- Go语言目录
为什么学习Go语言 第一章 环境搭建 Windows搭建Go语言环境 第二章 Go语言基础 Go语言介绍 Go语言命名 Go语言内置类型和函数 Go语言特殊函数介绍 Go语言运算符 第三章 Go语言程 ...
- Mac下配置Java Web开发环境(Mac 10.12)
1.JDK http://www.cnblogs.com/EasonJim/p/6277541.html 2.MySQL http://www.cnblogs.com/EasonJim/p/62758 ...
- DB2 Package Issues and Solution
Client 从 10.1 升级到11.1之后,而server端的DB 是10.1 版本,当客户执行sql语句时候报错: select * from ebcc.eol_item_info where ...
- (转)IBM AIX系统安装
本文经孤独红尘收集整理,转载请注明出处:http://huxuan713.blog.163.com/< xmlnamespace prefix ="o" ns =" ...
- Eclipse 安装spring插件spring tool suite(STS)
安装方法有2种,一种是在线安装,比较方便,但耗时较长,一种是离线安装,步骤复杂一些,但耗时少,下面请看详细步骤. 方法一:在线安装 1:打开eclipse菜单Help>Eclise Ma ...