## react-router-dom 编程式路由导航 (v5)

###### 1.push跳转+携带params参数

```jsx
props.history.push(`/b/child1/${id}/${title}`);
```

###### 2.push跳转+携带search参数

```jsx
props.history.push(`/b/child1?id=${id}&title=${title}`);
```

###### 3.push跳转+携带state参数

```jsx
props.history.push(`/b/child1`, { id, title });
```

###### 4.replace跳转+携带params参数

```jsx
this.props.history.replace(`/home/message/detail/${id}/${title}`)
```

###### 5.replace跳转+携带search参数

```jsx
this.props.history.replace(`/home/message/detail?id=${id}&title=${title}`)
```

###### 6.replace跳转+携带state参数

```jsx
this.props.history.replace(`/home/message/detail`, { id, title });
```

###### 7.前进

```jsx
this.props.history.goForward();
```

###### 8.回退

```jsx
this.props.history.goForward();
```

###### 9.前进或回退 ( go )

```jsx
this.props.history.go(-2); //回退到前2条的路由
```

###### 在一般组件中使用编程式路由导航 (非路由组件)

```jsx
import {withRouter} from 'react-router-dom'

class Header extends Component {
// withRouter(Header)后,就可以在一般组件内部使用 this.props.history
//...
}

export default withRouter(Header)

```

## react-router-dom 编程式路由导航 (v6)

```jsx
// v6版本编程导航使用 useNavigate (以下为引入代码)
import { useNavigate } from "react-router-dom";
export default function A() {
const navigate = useNavigate();
//...
}
```

###### 1.push跳转+携带params参数

```jsx
navigate(`/b/child1/${id}/${title}`);
```

###### 2.push跳转+携带search参数

```jsx
navigate(`/b/child2?id=${id}&title=${title}`);
```

###### 3.push跳转+携带state参数

```jsx
navigate("/b/child2", { state: { id, title }});
```

###### 4.replace跳转+携带params参数

```jsx
navigate(`/b/child1/${id}/${title}`,{replace: true});
```

###### 5.replace跳转+携带search参数

```jsx
navigate(`/b/child2?id=${id}&title=${title}`,{replace: true});
```

###### 6.replace跳转+携带state参数

```jsx
navigate("/b/child2", { state: { id, title },replace: true});
```

>**为您推荐相关文章:**
* 深度解析 React useRef Hook 的使用 !<https://juejin.cn/post/7042583468152356871>
* 最简洁的 Mbox 6.x 基本使用步骤介绍(仅三步)!!!<https://juejin.cn/post/7041103984219652133>
* (干货) 全网最全 react-router-dom v6.0学习指南(新特性深入解读、持续更新...)!!!<https://juejin.cn/post/7040289734836355085>
* (原创)深入解读s React 中的useState Hook 修改了值,但是不重新渲染,不刷新的问提<https://juejin.cn/post/7039237659574665247>
* React中使用 react-router-dom 路由传参的三种方式详解【含V5.x、V6.x】!!!<https://juejin.cn/post/7042849947451916296>

在React中使用 react-router-dom 编程式路由导航的正确姿势【含V5.x、V6.x】的更多相关文章

  1. vue.js编程式路由导航 --- 由浅入深

    编程式路由导航 实例中定义一个方法,这个方法绑定在标签上 然后就设置路由跳转 语法 this.$router.history.push('要跳转路由的地址') <!DOCTYPE html> ...

  2. vue_VueRouter 路由_路由器管理n个路由_并向路由组件传递数据_新标签路由_编程式路由导航

    路由:就是一个 key 与 value 的映射关系.key 就是 pathh 前台路由的 value 是 Component 组件对象 后台路由的 value 是一个 回调函数 普通链接: 会发送请求 ...

  3. vue-router 编程式路由

    $route -> 使用它的属性 $router-> 使用它的方法 编程式的导航,即js控制跳转 //声明式:<router-link :to="..."> ...

  4. VueJs(10)---vue-router(动态路由,嵌套式路由,编程式路由)

    vue-router(动态路由,嵌套式路由,编程式路由) 本文是基于官网学习,官网具体学习目录:vue-router 一.安装 基于vue-cli脚手架安装还是蛮简单的:在文件当前目录下运行: npm ...

  5. python 全栈开发,Day92(编程式的导航,vue页面布局,marked包的使用)

    昨日内容回顾 1. 组件间的传值 1. bus --> 空Vue对象 通过向bus对象抛出自定义事件的方式在组件间传递信息 2. 注意事项: 1. bus.$on()应该在组件mounted(挂 ...

  6. SpringMVC 解析(四)编程式路由

    多数情况下,我们在使用Spring的Controller时,会使用@RequestMapping的形式把请求按照URL路由到指定方法上.Spring还提供了一种编程的方式去实现请求和路由方法之间的路由 ...

  7. 阶段3 2.Spring_10.Spring中事务控制_9 spring编程式事务控制1-了解

    编程式的事物控制,使用的情况非常少,主要作为了解 新建项目 首先导入包坐标 复制代码 这里默认值配置了Service.dao和连接池其他的内容都没有配置 也就说现在是没有事物支持的.运行测试文件 有错 ...

  8. Spring中声明式事务处理和编程式事务处理的区别

    编程式事务:所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理.管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManag ...

  9. vue编程式路由实现新窗口打开

    一. 标签实现新窗口打开: 官方文档中说 v-link 指令被 组件指令替代,且 不支持 target=”_blank” 属性,如果需要打开一个新窗口必须要用标签,但事实上vue2版本的 是支持 ta ...

随机推荐

  1. [cf566C]Logistical Questions

    记$d(x,y)$为$x$到$y$的距离,$cost_{x}=\sum_{i=1}^{n}w_{i}d(x,i)^{\frac{3}{2}}$为$x$的代价 取$C$为足够大量,对于一条边权为$w$的 ...

  2. 前端---梳理 http 知识体系 2

    为什么要有HTTPS HTTP 天生具有明文的特点,整个传输过程完全透明,任何人都能够在链路中截获.修改或者伪造请求 / 响应报文,数据不具有安全性.仅凭HTTP 自身是无法解决的,需要引入新的HTT ...

  3. Redis | 第7章 Redis 服务器《Redis设计与实现》

    目录 前言 1. 命令请求的执行过程 1.1 发送命令请求 1.2 读取命令请求 1.3 命令执行器(1):查找命令实现 1.4 命令执行器(2):执行预备操作 1.5 命令执行器(3):调用命令的实 ...

  4. MYSQL5.8-----3

    666666666666666666666666 如多带有通配符的,要使用一下格式 select * from user where usename like "%1\%" ESC ...

  5. CentOS6.9安装python3

    安装依赖包: yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel w ...

  6. ArrayList总结及部分源码分析

    ArrayList源码阅读笔记 1. ArrayList继承的抽象类和实现的接口 ArrayList类实现的接口 List接口:里面定义了List集合的基本接口,ArrayList进行了实现 Rand ...

  7. 学习java 7.10

    学习内容: List 集合:有序集合,用户可以精确控制列表中每个元素的插入位置 List 集合特点:有序:存储和取出的元素顺序一致 可重复:存储的元素可以重复 增强for循环:简化数组和 Collec ...

  8. Hadoop fs.copyToLocalFile错误

    fs.copyToLocalFile(new Path("/study1/1.txt"), new Path("C:/Users/Administrator/Deskto ...

  9. vim中搜索指定单词(不加前后缀)

    \< : 搜索内容作为单词开头 \> : 搜索内容作为单词结尾 一起用即为将搜索内容指定为whole word e.g. : word_suffix word 如果用/word来搜索则两个 ...

  10. Linux基础命令---alias别名

    alias Alias不带参数或使用-p选项在标准输出上以"name=value"的形式打印别名列表.当提供参数时,为其值给定的每个名称定义一个别名.值中的尾随空格将导致在扩展别名 ...