React Router路由传参方式总结

首先我们要知道一个前提,路由传递的参数我们可以通过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这样写的好处,不管上一层路由多长,写这个就都能读出来,不用手动去写了。
 
  1 <Route path={`${match.path}/foodmenu`} component={Foodmenu}/> </Route> 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/kaiqinzhang/p/9977449.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值