一、params参数
传递params参数
路由链接(携带参数):<Link to='/demo/test/18'}>详情</Link>
注册路由(声明接收):<Route path="/demo/test/:id" component={Test}/>
获取params参数
import React from 'react';
import { Routes, Route, useParams } from 'react-router-dom';
import User from './pages/User.jsx'
function ProfilePage() {
// 获取URL中携带过来的params参数,"/demo/test/:id"
let { id } = useParams();
return <>{id}</>
}
二、search参数
传递search参数
路山链接(携带参数):<Link to='/demo/test?name=tom&age=18'}>详情</Link>
注册路由(无需声明,正常注册即可):<Route path="/demo/test" component={Test}/>
获取search参数
import React from 'react'
import {useSearchParams} from 'react-router-dom'
export default function Detail() {
const [search,setSearch] = useSearchParams()
const name= search.get('name')
const age= search.get('age')
return (
<ul>
<li>
<button onClick={()=>setSearch('name=哈哈&age=11')}>点我更新一下收到的search参数</button>
</li>
<li>名字:{name}</li>
<li>年龄:{age}</li>
</ul>
)
}
三、state参数
传递state参数
路由锋按(携带参数):<Link to={{path:'/demo/test',state:{name:'tom',age:18}}}>详悄</Link>
注册路由(无需声明,正常注册即可):<Route path="/demo/test"component={Test}/>
获取state参数
import React from 'react'
import {useLocation} from 'react-router-dom'
export default function Detail() {
const {state} = useLocation()
console.log('@',x)
// x就是location对象:
/*
{
hash: "",
key: "ah9nv6sz",
pathname: "/login",
search: "?name=tom&age=18",
state: {name: 'tom', age: 18}
}
*/
return (
<ul>
<li>名字:{state.name}</li>
<li>年龄:{state.age}</li>
</ul>
)
}