详解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 相关文章推荐
window.location不跳转的问题解决方法
Apr 17 Javascript
使用jQuery实现星级评分代码分享
Dec 09 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
Dec 13 Javascript
Ionic+AngularJS实现登录和注册带验证功能
Feb 09 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
12个非常有用的JavaScript技巧
May 17 Javascript
基于input动态模糊查询的实现方法
Dec 12 Javascript
vue-cli项目配置多环境的详细操作过程
Oct 30 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
Mar 09 Javascript
微信小程序手动添加收货地址省市区联动
May 18 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 如何获取二维数组中某个key的集合
2014/06/03 PHP
php redis实现对200w用户的即时推送
2017/03/04 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
PHP重载基础知识回顾
2020/09/10 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
python 运算符 供重载参考
2009/06/11 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
python pandas生成时间列表
2019/06/29 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
人力资源总监工作说明
2014/03/03 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
深入理解python多线程编程
2021/04/18 Python
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers