详解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 控制下拉菜单刷新的方法
Mar 03 Javascript
document.write()及其输出内容的样式、位置控制
Aug 12 Javascript
一些老手都不一定知道的JavaScript技巧
May 06 Javascript
详解javascript遍历方式
Nov 11 Javascript
如何使用AngularJs打造权限管理系统【简易型】
May 09 Javascript
jQuery Easyui datagrid/treegrid 清空数据
Jul 09 Javascript
微信小程序 swiper组件轮播图详解及实例
Nov 16 Javascript
JS实现移动端按首字母检索城市列表附源码下载
Jul 05 Javascript
vue下history模式刷新后404错误解决方法
Aug 18 Javascript
Vue 事件处理操作实例详解
Mar 05 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
Mar 03 Javascript
开发一个封装iframe的vue组件
Mar 29 Vue.js
基于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 轻松解析 XML
2006/12/04 PHP
优化PHP代码的53条建议
2008/03/27 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
Python爬虫实现百度图片自动下载
2018/02/04 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
银行求职推荐信范文
2013/11/30 职场文书
科技之星事迹材料
2014/06/02 职场文书
团组织推荐意见
2015/06/05 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS