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

React/Express基础CRUD详情页报Cannot read property 'params' of undefined错误

问题根因
  • 1 路由参数名不匹配:App.jsx中路由定义的路径参数为id,但Microjob.jsx中使用useParams时错误解构了不存在的microjobId字段,导致拿到的参数值为undefined
  • 2 类组件错误读取路由注入属性:只有直接绑定到Route组件component属性的页面组件,才会被react-router自动注入match/location/history属性,MicrojobContainer是页面组件内部的业务子组件,没有被路由直接注入属性,因此this.props.match本身就是undefined,读取它的params自然会报错
修复步骤

1 修正Microjob.jsx的参数读取与传递

修改views/Microjob.jsx的代码,匹配路由参数名并正确传递给子组件:

import React from "react";
import { useParams } from "react-router-dom";
import { MicrojobContainer } from "../components";

export default function Microjob() {
  // 路由定义的参数名是id,直接解构id
  let { id } = useParams();
  return (
    <div>
      <MicrojobContainer id={id} />
    </div>
  );
}

2 修正MicrojobContainer的参数读取逻辑

修改components/MicrojobContainer.jsx的componentDidMount方法,直接读取父组件传递的id属性,不要尝试读取不存在的match属性:

componentDidMount() {
  // 直接读取父组件传过来的id属性
  this.getMicrojob(this.props.id);
}
可选补充修复

你当前App.jsx的Menu组件里,/microjobs/:id对应的Link的to属性写死为/microjobs/:id是错误的,实际使用时需要在列表页跳转对应任务详情时,替换为具体的任务ID,示例写法为:

<Link to={`/microjobs/${job.id}`}>查看任务</Link>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:57:02