react v6路由传参

发布时间 2023-03-30 17:18:14作者: 抽风的皮鞭

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方法