Значения формы React не отражаются на элементах ФОРМЫ для РЕДАКТИРОВАНИЯ с использованием состояния класса

#javascript #reactjs #react-forms

Вопрос:

Я извлекаю данные из MongoDB и пытаюсь отредактировать данные, но по какой-то причине моя форма не отображает значения в форме. Может ли кто-нибудь помочь мне понять, в чем я ошибаюсь? ниже приведен мой код для любой справки, почему значения формы не обновляются, используя this.state.job_title в качестве примера:

edit-job.component.js

 import React, { Component } from "react"; import axios from "axios"; import DatePicker from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css";  export default class EditJob extends Component {  constructor(props) {  super(props);   this.onChangeUsername = this.onChangeUsername.bind(this);  this.onChangeJob_title = this.onChangeJob_title.bind(this);  this.onChangejob_comp_image = this.onChangejob_comp_image.bind(this);  this.onChangejob_comp_name = this.onChangejob_comp_name.bind(this);  this.onChangejob_description = this.onChangejob_description.bind(this);  this.onChangejob_location = this.onChangejob_location.bind(this);  this.onChangejob_field = this.onChangejob_field.bind(this);  this.onChangeDatejob_closing_date =  this.onChangeDatejob_closing_date.bind(this);  this.onSubmit = this.onSubmit.bind(this);   this.state = {  username: "",  job_title: "",  job_comp_image: "",  job_comp_name: "",  job_description: "",  job_location: "",  job_field: "",  job_closing_date: new Date(),  users: [],  };  }   componentDidMount() {  //GET CURRENT JOB LISTING TO EDIT  if (this.props.match amp;amp; this.props.match.params.id) {  axios  .get("http://localhost:5001/jobs/"   this.props.match.params.id)  .then((response) =gt; {  console.log(response.data);  this.setState({  username: response.data.username,  job_title: response.data.job_title,  job_comp_image: response.data.job_comp_image,  job_comp_name: response.data.job_comp_name,  job_description: response.data.job_description,  job_location: response.data.job_location,  job_field: response.data.job_field,  job_closing_date: new Date(response.data.job_closing_date),  });  })  .catch(function (error) {  console.log(error);  });  }  axios  .get("http://localhost:5001/users/")  .then((response) =gt; {  if (response.data.length gt; 0) {  this.setState({  users: response.data.map((user) =gt; user.username),  });  }  })  .catch((error) =gt; {  console.log(error);  });  }   onChangeUsername(e) {  this.setState({  username: e.target.value,  });  }   //Update user with new username entered by user  onChangeJob_title(e) {  this.setState({  job_title: e.target.value,  });  }   onChangejob_comp_image(e) {  this.setState({  job_comp_image: e.target.value,  });  }   onChangejob_comp_name(e) {  this.setState({  job_comp_name: e.target.value,  });  }   onChangejob_description(e) {  this.setState({  job_description: e.target.value,  });  }   onChangejob_location(e) {  this.setState({  job_location: e.target.value,  });  }   onChangejob_field(e) {  this.setState({  job_field: e.target.value,  });  }   onChangeDatejob_closing_date(job_closing_date) {  this.setState({  job_closing_date: job_closing_date,  });  }   onSubmit(e) {  e.preventDefault();   const job = {  username: this.state.username,  job_title: this.state.username,  job_comp_image: this.state.job_comp_image,  job_comp_name: this.state.job_comp_name,  job_description: this.state.job_description,  job_location: this.state.job_location,  job_field: this.state.job_field,  job_closing_date: new Date(),  };   console.log(job);   axios  .post(  "http://localhost:5001/jobs/update/"   this.props.match.params.id,  job  )  .then((res) =gt; console.log(res.data));   window.location = "/";  }   render() {  const Headerstyle = {  marginTop: "40px",  };  return (  lt;div style={Headerstyle}gt;  lt;h3gt;Edit Exercise Loglt;/h3gt;  lt;form onSubmit={this.onSubmit}gt;  lt;div className="form-group"gt;  lt;labelgt;Username: lt;/labelgt;  lt;select  UseRef="userInput"  required  className="form-control"  value={this.state.username}  onChange={this.onChangeUsername}  gt;  {this.state.users.map(function (user) {  return (  lt;option key={user} value={user}gt;  {user}  lt;/optiongt;  );  })}  lt;/selectgt;  lt;/divgt;  lt;div className="form-group"gt;  lt;labelgt;Job Title: lt;/labelgt;  lt;input  type="text"  required  className="form-control"  value={this.state.job_title}  onChange={this.onChangeJob_title}  /gt;  lt;/divgt;  lt;div className="form-group"gt;  lt;labelgt;Company Image: lt;/labelgt;  lt;input  type="text"  className="form-control"  value={this.state.job_comp_image}  onChange={this.onChangejob_comp_image}  /gt;  lt;/divgt;  lt;div className="form-group"gt;  lt;labelgt;Company Name: lt;/labelgt;  lt;input  type="text"  className="form-control"  value={this.state.job_comp_name}  onChange={this.onChangejob_comp_name}  /gt;  lt;/divgt;   lt;div className="form-group"gt;  lt;labelgt;Job Description: lt;/labelgt;  lt;input  type="text"  className="form-control"  value={this.state.job_description}  onChange={this.onChangejob_description}  /gt;  lt;/divgt;  lt;div className="form-group"gt;  lt;labelgt;Job Location: lt;/labelgt;  lt;input  type="text"  className="form-control"  value={this.state.job_location}  onChange={this.onChangejob_location}  /gt;  lt;/divgt;   lt;div className="form-group"gt;  lt;labelgt;Job related field: lt;/labelgt;  lt;input  type="text"  className="form-control"  value={this.state.job_field}  onChange={this.onChangejob_field}  /gt;  lt;/divgt;  lt;div className="form-group"gt;  lt;labelgt;Job Closing Date: lt;/labelgt;  lt;divgt;  lt;DatePicker  selected={this.state.job_closing_date}  onChange={this.onChangeDatejob_closing_date}  /gt;  lt;/divgt;  lt;/divgt;   lt;div className="form-group"gt;  lt;input  type="submit"  value="Edit Job Listing"  className="btn btn-primary"  /gt;  lt;/divgt;  lt;/formgt;  lt;/divgt;  );  } }  

Комментарии:

1. вы стремитесь к ограниченной форме, верно? получаете ли вы какие-либо начальные значения

2. вы имеете в виду значение из базы данных ?