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

React Router函数组件props为空,无法访问match对象问题求助

解决React Router中组件props为空、无法访问match对象的问题

嘿,这问题我太熟了——你用的是react-router-dom v6,但还在沿用v5的老写法!这就是为啥你的User组件props是空对象,拿不到match的原因。

问题根源

在react-router-dom v5及更早版本中,路由组件会自动接收match、location、history这些props,但到了v6,官方彻底移除了这个自动注入机制,直接通过props获取这些值的方式就失效了,所以你的User组件里的props自然是空的。

快速解决方法:使用useParams()钩子

v6专门提供了一系列钩子来替代原来的props注入,获取URL参数用useParams()就够了,修改你的User.js代码如下:

import React from 'react'
// 导入useParams钩子
import { useParams } from 'react-router-dom'

function User(){
  // 获取URL参数
  const { name } = useParams()
  return (
    <div>
      User - {name}
    </div>
  )
}
export default User

补充说明

如果之后你需要用到原来的location或者跳转功能,也可以用v6对应的钩子:

  • 获取location对象:useLocation()
  • 页面跳转:useNavigate()

你的App.js里的路由配置是符合v6规范的,不用修改,保持path="/user/:name"这样的参数写法就可以正常传递参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:07:33