'How to POST a form with reactJS

I would need help in order to be able to POST, PUT, DELETE information thanks to my API. But I get the following error:

TypeError: Cannot read properties of undefined (reading 'name')

And here is my code :

    constructor(props) {
    super(props);
    
    this.state = {
        nameComposant: '',
        indiceReferencement: '',
        referenceComposant: '',
        variante: '',
        photo: '',
        quantite: '',
        fk_Nomenclature: ''
    };
}

handleChange = (e) => {
    this.setState({
      [e.target.name]: e.target.value
    });
  }
handleSubmit = event => {
    event.preventDefault();

    const composant = {
        nameComposant: this.state.nameComposant,
        referenceComposant: this.state.referenceComposant,
        quantite: this.state.quantite,
        indiceReferencement: this.state.indiceReferencement,
        variante: this.state.variante,
        photo: this.state.photo
    }

    axios.put(`http://localhost:2022/api/composants/` + this.state.idComposant, { composant })
        .then(res => {
            console.log(res);
            console.log(res.data);
        })
}

My component :

const ModalFormAdd = () => {
        

        if(this.state.addComposant === true){
            return (
                <Modal className='modal' open={this.state.addComposant} key="post" onClose={this.hideModalPost}>
                    <Modal.Header>
                        <Modal.Title>Ajouter un composant</Modal.Title>
                    </Modal.Header>
                    <Modal.Body>
                        <Form className='form' onSubmit={this.handleSubmitPost}>
                            <Form.Group controlId="post-1">
                                <Form.ControlLabel>Indice de referencement</Form.ControlLabel>
                                <Form.Control onChange={this.handleChange}
                                            /*onChange={(e) => {
                                                this.setState({ indiceReferencement: e.target.value })
                                            }}*/
                                            name="indiceReference"
                                            value={indiceReferencement}
                                />
                            </Form.Group>
                            <Form.Group controlId="post-2">
                                <Form.ControlLabel>Nom Composant</Form.ControlLabel>
                                <Form.Control onChange={this.handleChange} 
                                            /*onChange={(e) => {
                                                this.setState({ nameComposant: e.target.value })
                                            }}*/
                                            name="nameComposant"
                                            value={nameComposant}
                                />
                            </Form.Group>
                            <Form.Group controlId="post-3">
                                <Form.ControlLabel>Photo du composant</Form.ControlLabel>
                                <Form.Control onChange={this.handleChange}
                                            /*onChange={(e) => {
                                                this.setState({ photo: e.target.value })
                                            }}*/
                                            name="photo"
                                            value={photo}
                                />
                            </Form.Group>
                            <Form.Group controlId="post-4">
                                <Form.ControlLabel>Reference</Form.ControlLabel>
                                <Form.Control onChange={this.handleChange}
                                            /*onChange={(e) => {
                                                this.setState({ referenceComposant: e.target.value })
                                            }}*/
                                            name="referenceComposant"
                                            value={referenceComposant}
                                />
                            </Form.Group>
                            <Form.Group controlId="post-5">
                                <Form.ControlLabel>Variante</Form.ControlLabel>
                                <Form.Control onChange={this.handleChange}
                                            /*onChange={(e) => {
                                                this.setState({ variante: e.target.value })
                                            }}*/
                                            name="variante"
                                            value={variante}
                                />
                            </Form.Group>
                            <Form.Group controlId="post-6">
                                <Form.ControlLabel>Quantité</Form.ControlLabel>
                                <Form.Control onChange={this.handleChange}
                                            /*onChange={(e) => {
                                                this.setState({ quantite: e.target.value })
                                            }}*/
                                            name="quantite"
                                            value={quantite}
                                />
                            </Form.Group>

                            <Button type='submit' appearance="primary">  Ok  </Button>
                        </Form>
                    </Modal.Body>
                    <Modal.Footer>
                        <Button onClick={this.hideModalPost} appearance="subtle">
                            Cancel
                        </Button>
                    </Modal.Footer>
                </Modal>
            )
        } return null
    }

My problem occurs when I enter values ​​in my inputs at the level of the onChange with the use of event.target.name or event.target.value



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source