react-router-dom v6 路由参数

1.通过state传参(HashRouter会丢失,BrowserRouter不会丢失)

传参页面

import { useNavigate } from "react-router-dom";

const navigate = useNavigate()

navigate("/home",{state:{id:123}})

接收页面

import { useLocation } from 'react-router-dom';

const location = useLocation()

const back = () => {
    console.log(location.state.id) //打印结果为123
}

由于state刷新后值还存在,有时需要删除值

复制代码
useEffect(() => {
    if (location.state?.id) {
      form.setFieldsValue({ id: location.state.id});
      let state = { ...location.state };
      delete state.id;
        navigate({ ...location, state });
    }
  }, [form, history, location]);
复制代码

2. 问号(?)形式传参(跳转新标签页只能用此携带参数)

传参页面

复制代码
import { useNavigate, createSearchParams } from "react-router-dom";

const navigate = useNavigate()

navigate("/home?id=123")
navigate({
    pathname: "/home", search: `?id=123` 
})

navigate({
    pathname: "/home",
    search: `?${createSearchParams({id:123})}`
})
 
复制代码

接收页面

import { useSearchParams } from "react-router-dom";

const [searchParams, setSearchParams] = useSearchParams();

const back = () => {
    console.log(searchParams.getAll('id')[0])  //打印结果为 123
    setSearchParams();  
}

3.params传参 (restful格式),需要在Route上显示写明 :params

传参页面

import { useNavigate } from "react-router-dom";  

<Route path={'/home/:id'} element={<ToPage/>} />

navigate(`/home/${id}`)

接收页面

import { useParams } from "react-router-dom";

const ToPages = () => {
const { id } = useParams();
console.log(id)
}

 

 

posted @   Janni  阅读(647)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示

目录导航