详解React路由传参方法汇总记录


Posted in Javascript onNovember 29, 2020

React中传参方式有很多,通过路由传参的方式也是必不可少的一种。

本文记录项目中会用到的路由传参方式: 路由跳转传参API + 目标路由获取参数的方式。

一、动态路由

跳转方法

Link

<Link to={{ pathname: "/user/add/1" }}>跳转新增页面</Link>

history.push

this.props.history.push("/user/add/1");

获参方法

this.props.match.params

二、路由query显示参数

Link跳转

<Link to={{ pathname: "/user/add", query: { id: 1 } }}>
     跳转新增页面
 </Link>

history.push

this.props.history.push({
       pathname: "/user/add",
       //参数
       query: { id: 1 },
      });

获参方法

this.props.location.query

三、路由state隐式参数

Link跳转

<Link to={{ pathname: "/user/add", state: { id: 1 } }}>
     跳转新增页面
    </Link>

history.push

this.props.history.push({
       pathname: "/user/add",
       state: { id: 1 },
      });

获参方法

this.props.location.state

代码DEMO

入口App组件

class App extends React.Component {
 render() {
  return (
   <BrowserRouter>
    <Route path="/user" exact component={User} />
    //动态路由
    <Route path="/user/add/:id?" component={UserAdd} />
    {/* <Redirect to="/user" /> */}
   </BrowserRouter>
  );
 }
}

动态路由Demo

User组件

import React, { Component } from "react";
import { Link } from "react-router-dom";

export default class User extends Component {
 render() {
  return (
   <div>
    <div className="user">User</div>

    {/* <Link to={{ pathname: "/user/add/1" }}>跳转新增页面</Link> */}
    <button
     onClick={() => {
      // 1.
      // this.props.history.push("/user/add/1");
      // 2.
      this.props.history.push({
       pathname: "/user/add/1",
      });
     }}
    >
     跳转新增页面
    </button>
   </div>
  );
 }
}

UserAdd组件

import React, { Component } from "react";

export default class UserAdd extends Component {
 render() {
  console.log("this.props.match.params:", this.props.match.params);
  return <div>UserAdd</div>;
 }
}

详解React路由传参方法汇总记录 

路由query显示参数Demo

User组件

import React, { Component } from "react";
import { Link } from "react-router-dom";

export default class User extends Component {
 render() {
  return (
   <div>
    <div className="user">User</div>

    <Link to={{ pathname: "/user/add", query: { id: 1 } }}>
     跳转新增页面
    </Link>
    <button
     onClick={() => {
      this.props.history.push({
       pathname: "/user/add",
       query: { id: 1 },
      });
     }}
    >
     跳转新增页面
    </button>
   </div>
  );
 }
}

详解React路由传参方法汇总记录 

路由state隐式参数Demo

User组件

import React, { Component } from "react";
import { Link } from "react-router-dom";

export default class User extends Component {
 render() {
  return (
   <div>
    <div className="user">User</div>

    <Link to={{ pathname: "/user/add", state: { id: 1 } }}>
     跳转新增页面
    </Link>
    <button
     onClick={() => {
      this.props.history.push({
       pathname: "/user/add",
       state: { id: 1 },
      });
     }}
    >
     跳转新增页面
    </button>
   </div>
  );
 }
}

详解React路由传参方法汇总记录

到此这篇关于详解React路由传参方法汇总记录的文章就介绍到这了,更多相关React路由传参内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
use jscript with List Proxy Server Information
Jun 11 Javascript
表单元素的submit()方法和onsubmit事件应用概述
Feb 01 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
jquery.validate的使用说明介绍
Nov 12 Javascript
js 采用delete实现继承示例代码
May 20 Javascript
js实现顶部可折叠的菜单工具栏效果实例
May 09 Javascript
JS制作手机端自适应缩放显示
Jun 11 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
JS简单获取当前年月日星期的方法示例
Feb 07 Javascript
Vue CLI3 如何支持less的方法示例
Aug 29 Javascript
vue实现新闻展示页的步骤详解
Apr 11 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
基于jQuery拖拽事件的封装
Nov 29 #jQuery
原生js+canvas实现验证码
Nov 29 #Javascript
原生js实现弹幕效果
Nov 29 #Javascript
javascript实现点击小图显示大图
Nov 29 #Javascript
js实现简易点击切换显示或隐藏
Nov 29 #Javascript
webpack4从0搭建组件库的实现
Nov 29 #Javascript
JS指定音频audio在某个时间点进行播放
Nov 28 #Javascript
You might like
php抓取https的内容的代码
2010/04/06 PHP
Look And Say 序列php实现代码
2011/05/22 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
Yii2如何批量添加数据
2016/05/17 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
文字幻灯片
2006/06/26 Javascript
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
Python实现简单的语音识别系统
2017/12/13 Python
Python多线程扫描端口代码示例
2018/02/09 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
python文件读写代码实例
2019/10/21 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
个人生活学习自我评价范文
2013/11/26 职场文书
保护环境建议书100字
2014/05/13 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
借钱欠条怎么写
2015/07/03 职场文书
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python