详解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中的变量声明早于赋值分析
Mar 01 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
Apr 02 Javascript
JS中表单的使用小结
Jan 11 Javascript
推荐一个封装好的getElementsByClassName方法
Dec 02 Javascript
javascript实现限制上传文件大小
Feb 06 Javascript
微信小程序 表单Form实例详解(附源码)
Dec 22 Javascript
jQuery控制元素隐藏和显示
Mar 03 Javascript
微信小程序 MD5的方法详解及实例代码
Mar 10 Javascript
详解ECMAScript6入门--Class对象
Apr 27 Javascript
vue父组件向子组件(props)传递数据的方法
Jan 02 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
May 16 Javascript
关于layui的动态图标不显示的解决方法
Sep 04 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动态创建Flash动画
2006/10/09 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
python抓取网页中的图片示例
2014/02/28 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
python中关于for循环的碎碎念
2017/06/30 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
django foreignkey(外键)的实现
2019/07/29 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
aws 通过boto3 python脚本打pach的实现方法
2020/05/10 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
如何理解python对象
2020/06/21 Python
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
绩效专员岗位职责
2013/12/02 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
2015年安全生产责任书
2015/01/30 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
创业计划书之干洗店
2019/09/10 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
Python中glob库实现文件名的匹配
2021/06/18 Python
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android