详解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 相关文章推荐
代码生成器 document.write()
Apr 15 Javascript
jquery插件之easing使用
Aug 19 Javascript
jquery Tab效果和动态加载的简单实例
Dec 11 Javascript
javaScript如何生成xmlhttp
Dec 16 Javascript
jQuery判断当前点击的是第几个li的代码
Sep 26 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
Apr 20 Javascript
JavaScript如何动态创建table表格
Aug 02 Javascript
js的OOP继承实现(必看篇)
Feb 18 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
Mar 09 Javascript
JS实现对json对象排序并删除id相同项功能示例
Apr 18 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
Aug 31 Javascript
js实现省级联动(数据结构优化)
Jul 17 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
JavaScript高级程序设计
2006/12/29 Javascript
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
python 的topk算法实例
2020/04/02 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
2014婚礼司仪主持词
2014/03/14 职场文书
合作意向书模板
2014/03/31 职场文书
大专生找工作自荐书
2014/06/10 职场文书
售后客服工作职责
2014/06/16 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
php png失真的原因及解决办法
2021/11/17 PHP
Spring中bean集合注入的方法详解
2022/07/07 Java/Android