Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การทำงานกับแบบฟอร์มใน React.js


ในรูปแบบ html อย่างง่าย องค์ประกอบของแบบฟอร์มจะคงคุณค่าไว้ภายในและส่งผ่านปุ่มส่งแบบฟอร์ม

ตัวอย่าง

<!DOCTYPE html>
<html>
<head>
<title>Form Example</title>
</head>
<body>
<form>
   <label>
      User Name:
      <input type="text" name="username" />
   </label>
   <input type="submit" value="Submit Form" />
</form>
</body>
</html>

ในตัวอย่างข้างต้น เรามีข้อมูลง่ายๆ ที่เรียกว่า username และเราสามารถรับค่าได้จากการส่งแบบฟอร์ม พฤติกรรมเริ่มต้นของแบบฟอร์ม html คือการนำทางไปยังหน้าใหม่ เช่น หน้าการส่งแบบฟอร์มโพสต์

แต่จะมีประโยชน์มากกว่าถ้าเรามีฟังก์ชัน JavaScript ตัวจัดการการส่งแบบฟอร์ม ซึ่งสามารถตรวจสอบข้อมูลในแบบฟอร์มได้เช่นกัน การตรวจสอบความถูกต้องจะให้ข้อเสนอแนะที่เกี่ยวข้องแก่ผู้ใช้

React มีเทคนิคในการจัดการการส่งแบบฟอร์มที่เรียกว่าเป็นส่วนประกอบควบคุม

เช่นเดียวกับใน html องค์ประกอบต่างๆ เช่น อินพุต พื้นที่ข้อความ ฯลฯ จะรักษาสถานะของตนเองและอัปเดตตามการกระทำของผู้ใช้ ใน React ฟิลด์ mutable จะถูกเก็บไว้กับ state object

การจัดการฟิลด์ชื่อผู้ใช้ในแนวทางของ React ของส่วนประกอบที่ควบคุม -

class UserForm extends React.Component {
   constructor(props) {
      super(props);
      this.state = {username: ''};
      this.handleChange = this.handleChange.bind(this);
      this.handleSubmit = this.handleSubmit.bind(this);
   }
   handleChange(event) {
      this.setState({username: event.target.value});
   }
   handleFormSubmit(event) {
      console.log('username: ' + this.state.username);
      event.preventDefault();
   }
   render() {
      return (
         <form onSubmit={this.handleFormSubmit}>
            <label>
               Name:
               <input type="text" value={this.state.username} onChange={this.handleUsernameChange} />
            </label>
            <input type="submit" value="Submit" />
         </form>
      );
   }
}

ที่นี่เรามีฟังก์ชันจัดการ onChange สำหรับอัปเดตชื่อผู้ใช้ของฟิลด์สถานะ

ใน formSubmit เราแค่แสดงบันทึกของคอนโซลในเบราว์เซอร์เพื่อแสดงชื่อผู้ใช้ที่ส่งมา

ส่วนประกอบควบคุมประเภทอื่นๆ ได้แก่ textarea, select tag , radio buttons เป็นต้น

มีองค์ประกอบบางอย่างที่ไม่สามารถควบคุมได้เช่นเดียวกับประเภทไฟล์ที่มีลักษณะอ่านอย่างเดียวและได้รับค่าของมันเมื่อส่งแบบฟอร์มเท่านั้น

การจัดการอินพุตหลายรูปแบบด้วยฟังก์ชัน JS เดียว -

handleInputChange(event) {
   const value = event.target.value;
   const name = event.target.name;
   this.setState({
      [name]: value
   });
}

ควรหลีกเลี่ยงอินพุตที่ควบคุมด้วยค่า Null สำหรับฟิลด์โดยการระบุค่าเริ่มต้นสำหรับฟิลด์โดยใช้การเริ่มต้นของรัฐ

สำหรับโซลูชันเต็มรูปแบบในการจัดการแบบฟอร์มใน React สามารถทำได้โดยใช้ไลบรารีของบุคคลที่สามเช่น formik ง่ายต่อการใช้การตรวจสอบ คำติชมไปยังผู้ใช้ และอื่นๆ