react中向路由组件传递参数的三种方式

一、向路由组件传递 Params参数

1.1、用法:
1.1.1、路由链接的写法
在路由链接的 url 中添加要传递的参数
在路径后面加上 /参数
如我们要传递一个 tom,18

 <Link to={`/home/message/detail/tom/18`}>{msgObj.title}</Link>

1.1.2、注册路由的写法
在注册路由的 path 中声明要接受的参数
在路径后面加上 /:要接受的参数名(这个名字随便取,只是用来接收参数)

 <Route path="/home/message/detail/:name/:age" component={Detail}/>

1.1.3、接收 params参数 的写法
params参数 在 this.props.match.params 中
属性名和你声明的名称一样。

const {name,age} = this.props.match.params

二、向路由组件传递 search参数

2.1、用法:
2.1.1、路由链接的写法
在路由链接的 url 中添加要传递的参数
在路径后面加上 /?参数名=参数值
如果有多个参数 就在第一个参数值后面加上 & 然后继续写参数
如我们要传递一个 tom,18

 <Link to={`/home/message/detail/?name=tom&age=18`}>{msgObj.title}</Link>

2.1.2、注册路由的写法
正常注册即可,无需声明接收

 <Route path="/home/message/detail" component={Detail}/>

2.1.3、接收 search参数 的写法
search参数 在 this.props.location 中
内容为 ?name=tom&age=18 这种格式叫做 urlencoded
需要我们做处理,推荐使用 querystring 工具
直接引入工具

 import qs from 'qs' //老版本引入 querystring

最终写法

 const { search } = this.props.location
 const {id,title} = qs.parse(search.slice(1))
  //由于第一个字符是?,所以使用 slice 方法去除第一个字符

三、向路由组件传递 state参数

3.1、用法:
3.1.1、路由链接的写法
给to 传递一个对象,对象有两个属性:
第一个属性 pathname :路由地址
第二个属性 state:一个对象,里面写你要传递的参数

 <Link to={{pathname:'/home/message/detail',state:{name:'tom',age:18}}}>{msgObj.title}</Link>


3.1.2、注册路由的写法
正常注册即可,无需声明接收

 <Route path="/home/message/detail" component={Detail}/>

3.1.3、接收 参数 的写法
state参数 在 this.props.location.state 中

const { name,age} = this.props.location.state

个人博客:余生的学习笔记

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值