详解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 相关文章推荐
javascript下过滤数组重复值的代码
Sep 10 Javascript
学习ExtJS Panel常用方法
Oct 07 Javascript
关于JQuery($.load)事件的用法和分析
Apr 09 Javascript
JavaScript中的全局对象介绍
Jan 01 Javascript
jQuery带进度条全屏图片轮播特效代码分享
Jun 28 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
Sep 22 Javascript
angularjs自定义ng-model标签的属性
Jan 21 Javascript
AngularJS使用ng-repeat指令实现下拉框
Aug 23 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
Nov 10 Javascript
angularjs使用div模拟textarea文本框的方法
Oct 02 Javascript
过滤器vue.filters的使用方法实现
Sep 18 Javascript
Javascript作用域和作用域链原理解析
Mar 03 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
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
python实现批量注册网站用户的示例
2019/02/22 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
Python 远程开关机的方法
2020/11/18 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
一份Java笔试题
2012/02/21 面试题
.net面试题
2016/09/17 面试题
大学生先进事迹材料
2014/02/16 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
企业人事任命书
2014/06/05 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
师德师风整改措施
2014/10/24 职场文书
员工年度工作总结2015
2015/05/18 职场文书
社团招新宣传语
2015/07/13 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书