react-router路由传参数

通配传参

1、 使用props.params 传值

<Route path="/path/:id" component={App} />

//Link组件,路由跳转,类似于a标签
<Link to="/path/id">list</Link>

//子组件中获取参数
this.props.match.params.id

如果需要传对象的话,可先将对象转化为字符串(使用JSON.stringify(str)将对象转化为字符串,在子组件中再将字符串转化为对象),参数太多时,URL变长

2、使用query定义传值方式

<Route path="/query" component={App} />

//在Link组件中定义参数

const param ={
    pathname:"/query",
    query:"参数"
}

<Link to={param}>List</Link>

//在子组件中获取参数值

this.props.location.query

这种方式,可以直接传对象,单但是页面刷新后,参数丢失

3、state传值方式,和query相似:

<Route path="/state component={App} />

//在Link组件中定义参数

const param ={
    pathname:"/state",
    state:"参数"
}

<Link to={param}>List</Link>

//在子组件中获取参数值
this.props.location.state

可传对象,页面刷新,参数丢失。

react路由设置中,除了<Link>标签以外,还有一个this.props.history.push,设置落雨跳转和传值:

第一种方式:在父组件中,设置路由标签:

<Link to="/about/:id">About</Link>

第二种方式:在父组件中,设置点击事件:

<div onClick={this.click.bind(this)}>About</div>

//js
click(){
    this.props.history.push({ pathname: "/about", state: { id } });
}

子组件中获取参数

this.props.location.state.id
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,342评论 0 3
  • 以下内容是我在学习和研究React时,对React的特性、重点和注意事项的提取、精练和总结,可以做为React特性...
    科研者阅读 8,297评论 2 21
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,145评论 1 32
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,467评论 0 5
  • 40、React 什么是React?React 是一个用于构建用户界面的框架(采用的是MVC模式):集中处理VIE...
    萌妹撒阅读 1,058评论 0 1