详解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判断浏览器的比较全的代码
Feb 13 Javascript
easyui datagrid 键盘上下控制选中行示例
Mar 31 Javascript
Iframe实现跨浏览器自适应高度解决方法
Sep 02 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
Mar 05 Javascript
基于JavaScript实现网页倒计时自动跳转代码
Dec 28 Javascript
Angularjs中使用Filters详解
Mar 11 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
Aug 18 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
Mar 21 Javascript
JS设计模式之单例模式(一)
Sep 29 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
在vant中使用时间选择器和popup弹出层的操作
Nov 04 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 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 时间转换Unix时间戳代码
2010/01/22 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
php实现Session存储到Redis
2015/11/11 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python实现简单多线程任务队列
2016/02/27 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
详解python里的命名规范
2018/07/16 Python
详解Python中第三方库Faker
2020/09/25 Python
python利用faker库批量生成测试数据
2020/10/15 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
全球立体声:World Wide Stereo
2018/09/29 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
学徒工职责
2014/03/06 职场文书
成龙洗发水广告词
2014/03/14 职场文书
党员服务承诺书
2014/05/28 职场文书
本科毕业生求职信
2014/06/15 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书