簡體   English   中英

react Js - × TypeError:無法讀取未定義的屬性(讀取'params'

[英]react Js - × TypeError: Cannot read properties of undefined (reading 'params'

我在這里嘗試編輯我的網絡應用程序上的帖子。 但是當我說 × TypeError:無法讀取未定義的屬性(讀取“參數”可以有人指出錯誤。我正在做這個教程。它工作正常。但在我的代碼中它不起作用。我嘗試導入 useParams 和使用它。但它說 useParams 不能在類組件中使用。有人可以指出錯誤或給我一個修復嗎?

import React, {Component} from 'react';
import axios from 'axios';
import {Dropdown} from "react-bootstrap";
import {useParams} from "react-router-dom";


class Feed2 extends Component {
    constructor(props){
        super(props);
        this.state={
            vehicle:"",
            plateNo:"",
            owner:"",
            manufacturer:"",
            manufacturedYear:"",
            color:""
        }
        
    }


    takInput = (e) => {
        const {name,value}= e.target;
        this.setState({
            ...this.state,
            [name]:value
        })
    }

    register = (e) =>{
        e.preventDefault();
        const id = this.props.match.params.id;
        const {plateNo,owner,manufacturer,manufacturedYear,color,vehicle} = this.state;
        const data ={
            plateNo:plateNo,
            owner:owner,
            manufacturer:manufacturer,
            manufacturedYear:manufacturedYear,
            color:color,
            vehicle:vehicle
        }

        console.log(data);
        axios.put(`http://localhost:8080/registrations/update/${id}`,data).then((res)=>{
            if(res.data.success){
                alert("Post Updated");
                this.setState({
                    vehicle:"",
                    plateNo:"",
                    owner:"",
                    manufacturer:"",
                    manufacturedYear:"",
                    color:""
                })
            }
        })
    }
    componentDidMount(){
        const id = this.props.match.params.id;
        axios.get(`/registrations/${id}`).then((res) =>{
            if(res.data.success){
                this.setState({
                   plateNo:res.data.registrations.plateNo,
                    owner:res.data.registrations.owner,
                    manufacturer:res.data.registrations.manufacturer,
                    manufacturedYear:res.data.registrations.manufacturedYear,
                    color:res.data.registration.color,
                    vehicle:res.data.registrations.vehicle
                })
                console.log(this.state.registrations)
            }
        })
    }


    render() {
        return (
            <div className="container">
                <div className="register-box">
                    <div className="Top">

                        <div className="box">
                            <input placeholder="Enter the licence plate number "
                                   className="input2" name="plateNo" value={this.state.plateNo} onChange={this.takInput} />
                        </div>

                    </div>
                    <div className="box">
                        <input placeholder="Enter the owners name "
                               className="input2" name="owner" value={this.state.owner} onChange={this.takInput} />
                    </div>
                    <div className="box">
                        <input placeholder=" Manufactured Year "
                               className="input2" name="manufacturedYear" value={this.state.manufacturedYear} onChange={this.takInput} />
                    </div>
                    <div className="box">
                        <input placeholder="Manufacturer"
                               className="input2" name="manufacturer" value={this.state.manufacturer} onChange={this.takInput} />
                    </div>
                    <div className="box">
                        <input placeholder="Color of the vehicle "
                               className="input2" name="color" value={this.state.color} onChange={this.takInput} />
                    </div>
                    <div className="box">
                        <input placeholder="Vehicle name "
                               className="input2" name="vehicle" value={this.state.vehicle} onChange={this.takInput} />
                    </div>

                    <Dropdown className="drop">
                        <Dropdown.Toggle variant="success" id="dropdown-basic">
                            Select Vehicle Type
                        </Dropdown.Toggle>

                        <Dropdown.Menu>
                            <Dropdown.Item href="#/action-1">Car</Dropdown.Item>
                            <Dropdown.Item href="#/action-2">Van</Dropdown.Item>
                            <Dropdown.Item href="#/action-3">Bus</Dropdown.Item>
                            <Dropdown.Item href="#/action-3">Lorry</Dropdown.Item>
                            <Dropdown.Item href="#/action-3">Three-weeler</Dropdown.Item>
                            <Dropdown.Item href="#/action-3">Bike</Dropdown.Item>
                            <Dropdown.Item href="#/action-3">Other</Dropdown.Item>

                        </Dropdown.Menu>
                    </Dropdown>



                    <div className="regbuttonContainer">
                        <button className="Button" onClick={this.register}>Register Vehicle</button>
                    </div>
                </div>

            </div>
        );
    }
}


export default Feed2;

我猜你需要用 withRouter HOC 包裝這個組件,所以它就像 export default withRouter(Feed2);

並從 'react-router-dom' 導入 withRouter;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM