## 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. 从零开始学Kotlin第五课

    函数式编程入门: package EL fun main(args: Array<String>) { var names= listOf<String>("tom& ...

  2. HDU 5322 Hope

    HDU 5322 Hope 考虑 $ dp[n] $ 表示 长度为 $ n $ 的所有排列的答案. 首先,对于一个排列来说,如果最大值在 $ i $ 位置,那么前 $ i - 1 $ 个数必然与 $ ...

  3. windows系统开/关机日志位置

    邮件计算机=>管理 =>系统工具=>事件查看器=>Windows日志=>系统 过滤:关机:事件ID=6006 开机:事件ID=6005

  4. Python基础笔记4

    模块 模块是一组Python代码的集合,一个.py文件就称之为一个模块(Module),按目录来组织模块称为包(Package).优点:提高了代码的可维护性:避免函数名和变量名冲突. mycompan ...

  5. php header下载文件 无法查看原因

    php header下载文件 无法查看原因 php header下载文件 下方函数可以下载单个文件 function download($file_url){ if(!isset($file_url) ...

  6. 对Javascript中的对象Object改变内存及其变量改变的图解

    Object 存储变量时,变量属性的内存改变图解 左边: 对象的内存   中间:变量属性的内存   右边:属性值的内存 [图一]创建一个对象,存obj1 变量--里面存age 属性和属性值--12. ...

  7. 单元测试在Unity中的应用

    项目描述:简单演示单元测试在Unity中的应用 项目地址:UnityTestRunner_Tutorial - SouthBegonia 项目版本:2020.3.20f1 项目用法:打开就用,代码都放 ...

  8. 用友低代码开发平台YonBuilder首次亮相DevRun开发者沙龙

    2020年的今天,没有人会再质疑企业上云的必要性与价值所在.从高科技行业到传统领域,大大小小的企业都希望走在变革道路前列,通过企业云加快业务数字化转型,更好地维护和管理企业数据. 然而,大多数企业都很 ...

  9. Erda 系列 Meetup「成都站」携手SOFAStack 和你聊聊云原生基础设施建设那点事儿

    技术控快上车啦秋天的第一场活动一起来收获技术干货吧! 主题: 云原生基础设施建设的现在及未来时间: 2021 年 9 月 11 日 (周六) 13:30-17:00活动地点: 四川省成都市蚂蚁 C 空 ...

  10. 如何启动、关闭和设置ubuntu防火墙 (转载)

    引自:http://www.cnblogs.com/jiangyao/archive/2010/05/19/1738909.html 由于LInux原始的防火墙工具iptables过于繁琐,所以ubu ...