React Router中如何正确传递和接收路由参数?
我在用React Router v6做项目时,想从一个页面跳转到详情页并传个id过去,但接收的时候一直拿不到。我试过用useParams,但打印出来是空对象,不知道哪里出错了。
我的路由配置和跳转代码大概是这样的:
// 路由定义
<Route path="/detail/:id" element={<DetailPage />} />
// 跳转处
navigate('/detail/123');
// DetailPage组件里
const { id } = useParams();
console.log(id); // 输出 undefined
首先检查一下你的路由配置是不是放在了
Routes里面,标准写法应该这样:其次,在 DetailPage 组件里用 useParams 的时候,确保你导入的是 react-router-dom 里的 useParams:
记得检查路径是否正确匹配,有时候小问题就是卡在这儿。我自己也遇到过类似的情况,折腾半天才发现是个小细节没注意。试试看这样调整,应该就能拿到参数了。
Routes包裹你的Route。改成这样:
如果你用了
BrowserRouter,它只负责路由导航,但参数解析必须包在Routes里。