详解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 08 Javascript
jQuery 常见学习网站与参考书
Nov 09 Javascript
从零学JSON之JSON数据结构
May 19 Javascript
JS合并数组的几种方法及优劣比较
Sep 19 Javascript
js的[defer]和[async]属性
Nov 24 Javascript
微信小程序页面传值实例分析
Apr 19 Javascript
Vue.js 动态为img的src赋值方法
Mar 14 Javascript
浅谈webpack4 图片处理汇总
Sep 12 Javascript
微信小程序实现图片滚动效果示例
Dec 05 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
vue router动态路由设置参数可选问题
Aug 21 Javascript
Echarts如何重新渲染实例详解
May 30 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
做一个有下拉功能的留言版
2006/10/09 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
BootStrap中
2016/12/10 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
express 项目分层实践详解
2018/12/10 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
Python合并多个装饰器小技巧
2015/04/28 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
Django REST framework视图的用法
2019/01/16 Python
django解决跨域请求的问题详解
2019/01/20 Python
Python pandas库中的isnull()详解
2019/12/26 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
食品安全汇报材料
2014/08/18 职场文书
企业法人授权委托书
2014/09/25 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
入队仪式主持词
2015/07/04 职场文书
教师病假条范文
2015/08/17 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
Python作用域和名称空间的详细介绍
2022/04/13 Python