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) }
本文来自博客园,作者:Janni,转载请注明原文链接:https://www.cnblogs.com/janni/p/16615163.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现