react路由跳转传递参数

App.js

首先要在最外层使用<BrowserRouter></<BrowserRouter>包裹住所有内容

1,先下载库

npm i react-router-dom@5 

1,使用params的方式传参

父组件

{/* 静态传参 */}
<Link to='/Home/Message/Detail/小米/001'>{item.name}</Link>
{/* 动态传参 */}
<Link to={`/Home/Message/Detail/小米/${item.id}`}>{item.name}</Link>

子组件

console.log(this.props.match.params,'params消息')

2,使用search传递参数

父组件

{/* 使用search静态传参 */}
<Link to='/Home/Message/Detail/?id=001'>{item.name}</Link>
{/* 使用search动态传参 */}
<Link to={`/Home/Message/Detail/?id=${item.id}&name=${item.name}`}>{item.name}</Link>





  {/* 使用search和state传参,不需要拼接路径 */}
 <Route path='/Home/Message/Detail' component={Detail}></Route>

子组件

获取到的search是urlencoded编码(即,?id=003&name=消息3)字符串,需要借助querystring解析(querystring.stringify(obj), querystring.parse(str))。去掉问号用qs.parse(str.slice(1)

3,state传参

父组件

{/* 使用state传参 */}
{/* 使用state静态传参 */}
<Link to={{pathname:'/Home/Message/Detail',state:{id:'001'}}}>{item.name}</Link>
{/* 使用state动态传参 */}
<Link to={{pathname:'/Home/Message/Detail',state:{id:item.id}}}>{item.name}</Link>

子组件

   const {state} = this.props.location
    console.log(this.props,'使用state传递参数')

上一篇:阿里 C++面试,算法题没做出来,,,-题目描述:


下一篇:DFT ATPG中常见影响coverage的因素有哪些?