React-路由传参数

React-路由传参数

一. 路由传参方法;
二. 路由跳转模式;
三. 编程式路由导航;

1. 方式1 ---- params参数
React-路由传params参数
页面1

1.传参;
<Link to="/nav1/id/title" />
or动态的模板字符串
<Link to={`/nav1/${id}/title`} />
2.声明 ----	接受params参数
<Route path="/nav1/:id/:title">

详情页

3.接收 ---- 	他们都是以组件的形式传参, 可以用props接受参数
let {id, title} = this.props.match.params

2. 方式2 ---- search参数
search 无需声明接收
React-路由传search参数

1.传参
<Link to={`/nav1?id=${id}&title='这是标题'`} />
2. 无需声明
<Route path="/nav1"/>

3. 接收
this.props.location.search
 const { search } = this.props.location.search
 console.log(qs.parse(search.slice(1)))  // search.slice(1)为了处理?id中的?

引入qs 这个react自带的, qs可以转换 ?id=123&title="asdf'这个格式
import qs from 'querystring' 
qs.stringify(obj)
qs.parse(str)

3. 方式3 ---- state参数
state无需声明接收

1.传参
<Link to={{pathname: 'nav1', state: {id: id, title: ''}}} />
2.无需声明

3.接收
this.props.location.state || {}
这个意思是如果 this.props.location.state 有值 就用这个  没有就是 {}
用state的时候 如果清除了浏览缓存就会报错, 那么就可以用上面的办法

二.路由跳转模式
push 和 repalce
模式是push
下面是replace

<Link replace={true} />

三.编程式路由导航

<button onClick={() => this.linkFun(id, title)}></button>
linkFun = (id, tile) => {
	// replace  +  携带params参数
	this.props.history.replace(`/nav/${id}/${title}`)
	this.props.history.push(`/nav/${id}/${title}`)
	// search
	this.props.history.push(`/nav/?id=${id}&title=${title}`)
	// state
	this.props.history.push(`/nav`, {id, title})
}

总结:
在这里插入图片描述

<Router>
<link></link>

// 接收路由参数
<Route></Route>
</Router>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值