详解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 相关文章推荐
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
Dec 28 Javascript
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
利用javascript实现web页面中指定区域打印
Oct 30 Javascript
WEB开发之注册页面验证码倒计时代码的实现
Dec 15 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
浅谈node中的exports与module.exports的关系
Aug 01 Javascript
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
使用jQuery给Table动态增加行、清空table的方法
Sep 05 jQuery
微信小程序整合使用富文本编辑器的方法详解
Apr 25 Javascript
微信小程序中如何使用flyio封装网络请求
Jul 03 Javascript
JavaScript监听触摸事件代码实例
Dec 30 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
Nov 12 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
php5 mysql分页实例代码
2008/04/10 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
php socket通信简单实现
2016/11/18 PHP
php实现微信支付之退款功能
2018/05/30 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
JSQL 批量图片切换的实现代码
2010/05/05 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python数据类型学习笔记
2016/01/13 Python
python2.7实现爬虫网页数据
2018/05/25 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
阿德的梦教学反思
2014/02/06 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
教师节晚会主持词
2015/06/30 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
七年级话题作文之执着
2019/11/19 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python