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

React Router v6中如何在React组件内获取URL参数

React Router v6类组件获取路由参数方案

你当前使用的是React Router v6版本(从Route配置的element属性可判断),该版本默认不会向类组件的props注入路由参数,可通过以下两种方式实现id参数获取:

方案1:自定义高阶组件适配Hook

React Router v6移除了v5自带的withRouter高阶组件,你可以自己实现一个,把路由参数注入类组件props:

  1. 首先实现高阶组件
// QuestionView.js顶部引入相关依赖
import { useParams } from 'react-router-dom';

// 自定义withRouter高阶组件
const withRouter = (Component) => {
  return (props) => {
    const params = useParams();
    return <Component {...props} params={params} />
  }
}
  1. 组件中获取参数并修改导出逻辑
class QuestionView extends React.Component {     
    render() {
          const { questions, users, params } = this.props;
          const { id } = params;
          // 后续业务逻辑直接使用id即可
    }
}

// 用高阶组件包裹后导出
export default withRouter(QuestionView);

方案2:路由定义处直接传参

如果不想单独封装高阶组件,也可以在App.js的路由定义处直接把参数传入组件:

  1. 修改App.js路由配置
// App.js中引入useParams
import { useParams } from 'react-router-dom';

// 路由配置修改为如下
<Route 
  path="/question/:id" 
  element={<QuestionView params={useParams()} />} 
/>
  1. 组件内直接从props取参数
class QuestionView extends React.Component {     
    render() {
          const { questions, users, params } = this.props;
          const { id } = params;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:24:05