最近在做的新项目使用的技术栈是 React+AntDesign,本篇主要记录在实践过程中使用react-router-dom时遇到的一些方法的总结。

1、HashRouterBrowserRouter

react-router-dom依赖于react-router,主要用于浏览器环境下的开发。它的路由基本有2个路由容器即HashRouterBrowserRouterHashRouter使用的是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的一些记录的更多相关文章

  1. React 实践记录 03 React router

    Introduction 本文主要参考了react router 的官方文档. React Router是一套完整的配合React的路由解决方案,可能你已经知道前端路由,或者知道后端有路由的概念,如下 ...

  2. React Router 4.x 开发,这些雷区我们都帮你踩过了

    前言 在前端框架层出不穷的今天,React 以其虚拟 DOM .组件化开发思想等特性迅速占据了主流位置,成为前端开发工程师热衷的 Javascript 库.作为 React 体系中的重要组成部分:Re ...

  3. React Router教程

    React Router教程 React项目的可用的路由库是React-Router,当然这也是官方支持的.它也分为: react-router 核心组件 react-router-dom 应用于浏览 ...

  4. React Router学习

    React Router教程 本教程引用马伦老师的的教程 React项目的可用的路由库是React-Router,当然这也是官方支持的.它也分为: react-router 核心组件 react-ro ...

  5. [转] React Router 使用教程

    PS:react-route就是一个决定生成什么父子关系的组件,一般和layout结合起来,保证layout不行,内部的子html进行跳转 你会发现,它不是一个库,也不是一个框架,而是一个庞大的体系. ...

  6. React虚拟DOM具体实现——利用节点json描述还原dom结构

    前两天,帮朋友解决一个问题: ajax请求得到的数据,是一个对象数组,每个对象中,具有三个属性,parentId,id,name,然后根据这个数据生成对应的结构. 刚好最近在看React,并且了解到其 ...

  7. 关于react router 4 的小实践

    详细代码栗子:https://github.com/wayaha/react-dom-CY clone然后 npm install npm start 分割线 1.这个项目使用create-react ...

  8. react虚拟dom diff算法

    react虚拟dom:依据diff算法 前端:更新状态.更新视图:所以前端页面的性能问题主要是由Dom操作引起的,解放Dom操作复杂性 刻不容缓 因为:Dom渲染慢,而JS解析编译相对非常非常非常快! ...

  9. React Router API文档

    React Router API文档 一.<BrowserRouter> 使用HTML5历史记录API(pushState,replaceState和popstate事件)的<Rou ...

  10. 笔记react router 4(二)

    上一篇我们提到react router 4的dom特性.那么这一次,我们来说一说4.X中的路由组件嵌套. 用过3.X的同学应该知道,路由组件的嵌套(即,路由的配置)方式是通过给<Route> ...

随机推荐

  1. python2与python3 的pip的安装

    python2的pip安装 $ sudo apt-get install python-pip python2安装第三方包 $ sudo pip install packagename python3 ...

  2. Python【每日一问】16

    问: [基础题]TCP/UDP/HTTP协议区别 [提高题]在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数, ...

  3. Java NIO学习与记录(七): Reactor单线程模型的实现

    Reactor单线程模型的实现 一.Selector&Channel 写这个模型需要提前了解Selector以及Channel,之前记录过FileChannel,除此之外还有以下几种Chann ...

  4. 【Alpha】Phylab 展示博客

    目录 Phylab Alpha 展示博客 一.团队简介 二.项目目标 2.1 典型用户 2.2 功能描述 2.3 用户量 三.项目发布与展示 3.1 新功能 3.2 修复缺陷 3.3 问题与限制 3. ...

  5. 状态机模式中的Task与对象池

    Task 抽象带来Task 首先,假设我们有这么一段逻辑:收到一个参数,先校验格式是否正确,再提取相关的参数出来,执行我们的事务,然后构建结果并返回.伪代码如下: /** * 一个engine类 ** ...

  6. Go语言目录

    为什么学习Go语言 第一章 环境搭建 Windows搭建Go语言环境 第二章 Go语言基础 Go语言介绍 Go语言命名 Go语言内置类型和函数 Go语言特殊函数介绍 Go语言运算符 第三章 Go语言程 ...

  7. 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 ...

  8. DB2 Package Issues and Solution

    Client 从 10.1 升级到11.1之后,而server端的DB 是10.1 版本,当客户执行sql语句时候报错: select * from ebcc.eol_item_info where ...

  9. (转)IBM AIX系统安装

    本文经孤独红尘收集整理,转载请注明出处:http://huxuan713.blog.163.com/< xmlnamespace prefix ="o" ns =" ...

  10. Eclipse 安装spring插件spring tool suite(STS)

    安装方法有2种,一种是在线安装,比较方便,但耗时较长,一种是离线安装,步骤复杂一些,但耗时少,下面请看详细步骤. 方法一:在线安装     1:打开eclipse菜单Help>Eclise Ma ...