You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中useParams返回undefined问题求助

解决React Router useParams()返回undefined的问题

核心原因

useParams()只能在被<Route>直接渲染的组件或其嵌套组件中使用,你在包裹<Router>的App组件里调用它,组件不在路由上下文范围内,自然拿不到URL参数。

正确实现方式

把useParams()移到路由渲染的Form组件中:

  1. 修改App组件:
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import Form from './Form';

function App() {
  return (
    <Router>
      <Routes>
        {/* 路径前加斜杠是标准写法 */}
        <Route path="/:id" element={<Form />} />
      </Routes>
    </Router>
  );
}

export default App;
  1. 在Form组件中获取参数:
import { useParams } from 'react-router-dom';

function Form() {
  const { id } = useParams();
  console.log(id); // 访问localhost:3000/xhyz1时,会输出xhyz1
  return <div>当前ID:{id}</div>;
}

export default Form;

关于你之前尝试的说明

  • 未解构id的写法const id = useParams();本质还是错误的,因为App不在路由上下文里,返回的对象始终为空。
  • 给路径添加斜杠path="/:id"是正确的路由规范,但无法解决调用位置错误的核心问题。

内容的提问来源于stack exchange,提问作者Baslki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:55:21