开发者问题收集

未捕获的类型错误:无法读取未定义的属性(读取‘params’)(使用类组件)

2022-02-28
337

我通过构建锻炼跟踪器来练习我的 MERN 技能,然后我遇到了这个错误: “未捕获的类型错误:无法读取未定义的属性(读取‘params’)” 。我最近找到了一个解决方案,指导我使用“useParams”钩子。但这对我来说没用,因为我正在使用类组件。以下是造成问题的代码块:

import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css"
import axios from "axios";
import { Params } from "react-router-dom";

export default class EditExercises extends Component {
    constructor(props) {
        super(props);

        this.onChangeUsername = this.onChangeUsername.bind(this);
        this.onChangeDescription = this.onChangeDescription.bind(this);
        this.onChangeDuration = this.onChangeDuration.bind(this);
        this.onChangeDate = this.onChangeDate.bind(this);
        this.onSubmit = this.onSubmit.bind(this);

        this.state = {
            username: "",
            description: "",
            duration: 0,
            date: new Date(),
            users: []
        }
    }

    componentDidMount() {
        axios.get("http://localhost:5000/exercises/" + this.props.match.Params.id)
            .then(response => {
                this.setState({
                    username: response.data.username,
                    description: response.data.description,
                    duration: response.data.duration,
                    date: new Date(response.data.date)
                })
            })
            .catch(error => console.log(error));
2个回答

您的路由存在问题,请分享该文件。它是否包含路由 :id? 像这样

如果没有,请添加它,因为路由器 dom 无法在那里找到它。如果在那里,请将 Params 的名称更改为 params(小写字母)

Asad Ashraf
2022-02-28

必须是 params 而不是 Params

axios.get("http://localhost:5000/exercises/" + this.props.match.params.id)
Borni.Mr
2022-02-28