1. params参数
形式:/home/1/aa
// 声明式导航 <Link to={`home/${id}/${name}`}> // 编程式导航 navigate(`page/${id}/${name}`); ... // 需要在路由里声明传参的key值 <Route path="home/:id/:name" element={Home}></Route>
组件内接收参数
// 组件接收参数 import {useParams} from 'react-router-dom'; function Home(){ const {id, name} = useParams(); }
2. search参数
形式:/home?id=1&&name=aa
// 声明式导航 <Link to={`home?id=${id}&&name=${name}`}> // 编程式导航 navigate(`home?id=${id}&&name=${name}`);
组件内接收参数
// 组件接收参数 import { useSearchParams } from 'react-router-dom'; function Home(){ const [searchParams] = useSearchParams(); const id = searchParams.get("id"); const name = searchParams.get("name"); }
3. state参数
形式:不改变url,参数隐式传递
// 声明式导航 <Link to='home' state={{id:1,name:'aa'}}> // 编程式导航 navigate('home',{state:{id:1,name:'aa'}});
组件内接收参数
import {useLocation} from 'react-router-dom'; function Home(){ const {id,name} = useLocation().state; }
useParams、useSearchParams、useLocation方法都是函数组件使用的HOOK方法