是基于我写的上一篇文章《用react的路由写一个简单的导航》上面扩展出来的,朋友们可以去康康。

通过url传参的方法有:

1)直接? 接收:this.props.location.search

2)query 接收:this.props.location.query

3)state 接收:this.props.location.state

4)params 接收:this.props.location.params

用react的路由写一个简单的导航_qq_42505615的博客-CSDN博客

先看看我们需要得到的效果:

点击【姓名007】,咱们可以进去看到007的其他详细信息。

1.咱们先创建一个叫做 RoleDetail.js的文件,代码如下:

import React, { Component } from 'react';class RoleDetail extends Component {render() {return (<div><h2>这是人员具体信息</h2><div>ID为</div></div>);}
}export default RoleDetail;

2.咱们现在去App.js配置它的路径

 App.js代码如下:

import './App.css';
import{BrowserRouter as Router,  Link,  Route  }from 'react-router-dom'import Nav from './Component/Nav/Nav'
import Bug from './View/Bug'
import Home from './View/Home'
import Role from './View/Role'
import Share from './View/Share'
import RoleDetail from './View/RoleDetail';function App() {return (<div className="App"><Router><Nav></Nav><Route path="/home" component={Home}></Route><Route path="/role" component={Role}></Route><Route path="/share" component={Share}></Route><Route path="/bug" component={Bug}></Route><Route path="/detail" component={RoleDetail}></Route></Router></div>);
}export default App;

3.再去Role.js把Link加上就好,值得注意的是,react中变量要写在{}里面。

搞定~

可以观察到我们把鼠标放在【姓名:007】上面时就可以在左下角看到咱们传递的参数。点进去后,发现参数加在url上面。

我们来观察一下控制台打印出来的内容:

我们发现在 location的 search 里面找到了传递的参数。

那么,传递多个参数我们该怎么做呢?很简单,代码如下:

<Link to={"/detail?id="+item.stuNo+"&name="+item.stuName}>姓名:{item.stuNo}</Link>

效果如图:

但是这样传参,需要你自己把url中传的参数解出来,太麻烦了!

这里有一个JS获取url参数的方法:https://blog.csdn.net/qq_36947128/article/details/78594462

那么换种思路

                <Link to={{pathname:"/detail",query:{id:item.stuNo,name:item.stuName}}}>姓名:{item.stuNo}</Link>薪水:{item.salary}

这个时候我们鼠标放在链接上时左下角如图,只有地址:

我们再看一下locatio中是否有传递的参数,答案是有的。

如果我们要把query取出来用该怎么办呢?

回到RoleDetail.js中,咱们把id和name解构出来方便使用。

效果如图:

别离开,还有两种类似的方法~params和state。因为写法相同,这里就写一种。其实这三者都差不多,只是属性不一样,而且state传的参数是加密的。

params( state):

修改一下代码:

                <Link to={{pathname:"/detail",params:{id:item.stuNo,name:item.stuName}}}>姓名:{item.stuNo}</Link>薪水:{item.salary}
        let {id,name} = this.props.location.params;

效果也是一样滴~

路由传参:

先注释一下免得报错。

咱们回到App.js中。

Role.js的代码为:

                <Link to={'detail/'+item.stuNo}>姓名:{item.stuNo}</Link>薪水:{item.salary}

效果如图,咱们在location的pathname中找到了传递的参数。

路由传参传两个参数怎么写呢?

一样的。更新一下代码:

App.js

          <Route path="/detail/:id/:name" component={RoleDetail}></Route>

Role.js

                <Link to={'detail/'+item.stuNo+"/"+item.stuName}>姓名:{item.stuNo}</Link>薪水:{item.salary}

效果如图:

解构出来在页面上显示和上面的类似。

let {id,name} = this.props.match.params

但是我们想没传参时候也访问 http://localhost:3000/detail/ 该怎么办呢?

修改一下Route即可。

          <Route path="/detail/:id?/:name?" component={RoleDetail}></Route>

效果如图:

React通过url传参和通过路由传参相关推荐

  1. react更改路由入参_react怎么路由传参?

    react路由传参(4种方式) 1.通过params传参(刷新页面后参数不消失,参数会在地址栏显示) 路由页面: //注意要配置 /:id 路由跳转并传递参数:链接方式:XX //或: XXjs方式: ...

  2. Laravel之路由请求方式、路由传参

    1.路由请求方式____文件路径app->routes->web.php //get请求方式 Route::get('user/show',function(){return '世间安得两 ...

  3. vue路由传参的三种方式

    目录 1.动态路由传参 2.params传参 3.query传参 1.动态路由传参 使用"路径参数"使用冒号 : 标记.当匹配到一个路由时,参数值会被设置到 this.$route ...

  4. Vue路由 传参几种方式

    ① 动态路由传参 {path:'detail/:username?',name:'a', component:()=>import('@/components/Detail.vue')}< ...

  5. react更改路由入参_JavaScript基础教程 react router路由传参

    本篇教程介绍了JavaScript基础教程 react router路由传参,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入. < 今天,我们要讨论的是react ...

  6. react路由传参的几种方式

    第一种传参方式,动态路由传参 <Link to='/home/dx'>首页</Link><Route path="/home/:name" compo ...

  7. react路由:路由传参params、search、state

    react路由:路由传参params.search.state(含二级路由和三级路由) 一.准备工作: ​ 1.创建myProject05-router目录 ​ 2.创建清单文件, npm init ...

  8. react路由传参问题

    之前在工作中开发一个react项目的时候遇到路由传参的问题,当时因为基础不好,解决这个问题用了好久,还产生了一个bug,特此记录一下. 项目中路由跳转使用的是hashRouter,由于是详情页面跳到审 ...

  9. react路由嵌套路由及路由传参

    因为react的嵌套路由跟vue比就像屎一样 不好写 所以在使用的时候建议使用react-router-config来配置路由 会相对轻松 第一步 先安装路由依赖 yarn add react-rou ...

最新文章

  1. Python爬取考研数据:所有985高校、六成211高校均可调剂
  2. 计算机网络笔记整理图片,计算机网络高分笔记整理(2)
  3. .net core 注入机制与Autofac
  4. powershell自动化操作AD域、Exchange邮箱系列(6)——获取并监控内存、CPU占用率
  5. layUI 选中表格 checkbox
  6. 养成女友?我训练出了一个“杨超越”聊天机器人
  7. LINUX下载编译libsndfile
  8. 《C语言程序设计:问题与求解方法》——2.15节算术表达式
  9. 电子邮件传输协议原理简介
  10. 云队友丨知乎10万赞回答:真正厉害的人,是怎么分析问题的?
  11. 国产系统银河麒麟(龙芯MIPS)远程访问自研windows程序
  12. 闭环系统零、极点位置对时间响应性能指标的影响
  13. 解决visio对象在word中显示不全的问题
  14. stm32不使用外部晶振管脚怎么处理_stm32103如果不用32k晶振,那引脚是悬空还是接地?...
  15. 【网络基础】Https加解密详解
  16. linux下删除oracle数据库实例
  17. 使用vue报错Cannot use ‘in‘ operator to search for
  18. 计算网络节点的平均度
  19. github上的优秀android开源项目 大全 真是太他妈的全了!!!!!!
  20. 2016年8月13日 星期六 --出埃及记 Exodus 16:14

热门文章

  1. iOS 警告消除(记录贴)
  2. ⭐算法入门⭐《模拟》中等01 —— LeetCode 8. 字符串转换整数
  3. M1芯片加持!新iPad Pro跑分曝光单核1727分 多核7270分
  4. 手机语音转文字如何实现?一个工具,两种方法教你语音转文字
  5. 互联网人均喷子?键盘侠是怎样炼成的
  6. ClipCursor与GetClipCursor 用法
  7. 真正的精确到毫秒级的动态秒表
  8. wangeditor ajax,laravel 中 wangEditor 富文本编辑器使用指南
  9. 双向板受力特点_双向板的受力特点与试验结果
  10. unity 轻型UnityWebRequest 加载