首先我们要知道一个前提,路由传递的参数我们可以通过props里面的属性来获取。只要组件是被<Router>组件的<component>定义和指派的,这个组件自然就有了props的match,history和location属性。

了解了这个,接下来我们进入正题:

 
1.动态路由用法一:(:id法) 通过match.params获取参数
<Link exact to={`${match.path}/foodlist/3`} component={FondList}/>  </Link>
<Switch>
<Route path={`${match.path}/foodlist/:id`} component={FondList}/> </Route
</Switch> const FoodList = ({match})=>{ // FoodList是通过component渲染出来的,所有它有props的match属性。
<div>FondList-{match.params.id}</div> //此时id就被渲染出来了
}
 2.动态路由用法二:(?id法)不建议使用 :打印出来发现没有可以直接获取?号后面值的方法,我们可以自己封装一个方法或者使用第三方的库。所以不建议使用?传参

<Link exact to={`${match.path}/foodlist?id=3`} component={FondList}/> </Link>
<Switch>
<Route path={`${match.path}/foodlist`} component={FondList}/> </Route
</Switch> const FoodList = (props)=>{
console.log(props) //打印出来发现没有可以直接获取?号后面值的方法,我们可以自己封装一个方法或者使用第三方的库。所以不建议使用?传参
<div>FondList</div>
}
3.事件点击跳转(编程式导航)
通过this.props.history.push跳转路由,通过 props.location.state获取参数。
class FoodList extends Component{
render(){
let {match,location,history} =this.props
return (
<div>foodlist={match.parmas.id}</div>
<button onCLick={this.goto.bind(this)}>foodmenu</button>
)
}
goto(){
this.props.history.push('/food/foodmenu',{name:"kaiqin"}) //path有两个参数,第一个是path路径,第二个是state参数。
}
} const FoodMenu =(props){
return <div>foodmenu-{props.location.state.name}</div> //通过 props.location.state获取参数。
} <Link exact to={`${match.path}/foodlist/3`} component={FondList}/> </Link>
<Switch>
<Route path={`${match.path}/foodlist/:id`} component={FondList}/> </Route
</Switch>
*另再附赠你们一个小知识点:
 
在定义子路由的时候,当前路径通过match.path来写。match.path这样写的好处,不管上一层路由多长,写这个就都能读出来,不用手动去写了。
 
  <Route path={`${match.path}/foodmenu`} component={Foodmenu}/> </Route> 
 
 
 
 
 
 
 
 
 

React Router路由传参方式总结的更多相关文章

  1. react router路由传参

    今天,我们要讨论的是react router中Link传值的三种表现形式.分别为通过通配符传参.query传参和state传参. ps:进入正题前,先说明一下,以下的所有内容都是在react-rout ...

  2. react中的传参方式

    react是一个SPA模式,即组件嵌套租,在一个单页面的应用中组件间的数值传递是必不可少的,主要的传参方式大致有一下几种: 1,在挂载的地方给组件传参 ReactDOM.rander(<a na ...

  3. Vue的Router路由传参

    一.文件结构 二.vue.js 打开此链接 https://cdn.bootcss.com/vue/2.6.10/vue.js 复制粘贴页面的所有内容 三.vue-router.js 打开此链接  h ...

  4. React中路由传参及接收参数的方式

    注意:  路由表改变后要重启服务      方式 一:          通过params         1.路由表中                     <Route path=' /s ...

  5. 每日技术总结:vue router传参方式,js获取设备高度

    今天貌似没什么问题,23333…… 1.vue router 路由传参的方式 应用情景:从分类页(category.vue)进入商品列表页(list.vue),需要传递商品分类id(catId),商品 ...

  6. vue路由传参的三种方式以及解决vue路由传参页面刷新参数丢失问题

    最近项目中涉及到跨页面传参数和后台进行数据交互,看到需求之后第一反应就是用路由传参来解决:Vue中给我们提供了三种路由传参方式,下面我们一个一个的来看一下: 方法一:params传参: this.$r ...

  7. Vue路由传参的几种方式

    原 Vue路由传参的几种方式 2018年07月28日 23:52:40 广积粮缓称王 阅读数 12613   前言:顾名思义,vue路由传参是指嵌套路由时父路由向子路由传递参数,否则操作无效.传参方式 ...

  8. vue路由传参的几种基本方式

    原文地址 this.$router.push跳转 现有如下场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据.父组件中: <li v-for="article i ...

  9. vue路由传参页面刷新参数丢失问题解决方案

    最近项目中涉及到跨页面传参数和后台进行数据交互,看到需求之后第一反应就是用路由传参来解决:Vue中给我们提供了三种路由传参方式,下面我们一个一个的来看一下: 方法一:params传参: this.$r ...

随机推荐

  1. Django的静态资源

    如果你的静态资源是某个APP专属,那么就在这个APP目录下建立一个static目录,就像上图report这个APP中的static目录.当浏览这个APP的网页时它会从这里去找资源,当然,它首先会从共用 ...

  2. 痞子衡嵌入式:第一本Git命令教程(2)- 连接(remote/clone)

    今天是Git系列课程第二课,上一课我们已经学会在本地创建一个空仓库,痞子衡今天要讲的是如何将本地仓库与远程建立联系. 1.将本地仓库挂上远程git remote 本地建好了仓库,我们希望能够挂到远程服 ...

  3. Centos7破解密码的两种方法--技术流ken

    Centos7忘记密码   在工作或者自己练习的时候我们难免会大意忘掉自己的root密码,有些同学忘掉密码竟然第一选择是重装系统,工作中可万万使不得! 本篇博客将讲解两种最常用的破解centos7忘掉 ...

  4. Jquery 强大的表单验证操作

    参考资料: 1.https://www.cnblogs.com/linjiqin/p/3431835.html(此篇最佳) 2.https://blog.csdn.net/pengjunlee/art ...

  5. Linux万能快捷键与命令

    tab键:补全命令 \ :命令折行写 Ctrl+C :结束命令 --help :查看命令详细信息 man :类似于help 比help更加详细. sudo :临时以管理员权限执行命令. 还有吗?

  6. ELK 日志采集 实战教程

    概要 带着问题去看教程: 不是用logstash来监听我们的日志,我们可以使用logback配置来使用TCP appender通过TCP协议将日志发送到远程Logstash实例. 我们可以使用Logs ...

  7. arcgis api 3.x for js 共享干货系列之二自定义 Navigation 控件样式风格(附源码下载)

    0.内容概览 自定义 Navigation 控件样式风格 源码下载 1.内容讲解 arcgis api 3.x for js 默认的Navigation控件样式风格如下图:这样的风格不能说不好,各有各 ...

  8. 42.Odoo产品分析 (四) – 工具板块(10) – 问卷(2)

    查看Odoo产品分析系列--目录 接上一篇Odoo产品分析 (四) – 工具板块(10) – 问卷(1) 4 页面 即问卷,点开一项查看:  可以看出,网页就是问卷本身的子目录,其中指明了该目录包括哪 ...

  9. 深入理解Java内存(图解堆栈)

    深入理解Java内存(图解)--转载 深入理解Java内存(图解) 这篇文章是转自http://blog.csdn.net/shimiso/article/details/8595564博文,自己对其 ...

  10. C语言使用HZK16显示每个像素的代码

    下边内容段是关于C语言使用HZK16显示每个像素的内容. #include<stdio.h>#include<stdlib.h>void main(){ int i,j; ch ...