Ralat Input Terkawal lwn. Tidak Terkawal dalam ReactJS
Apabila bekerja dengan komponen React, adalah penting untuk memahami perbezaan antara input terkawal dan tidak terkawal. Secara lalai, input tidak dikawal, bermakna nilainya diurus oleh DOM. Walau bagaimanapun, apabila kita menetapkan atribut nilai pada input, ia menjadi input terkawal, bermakna nilainya diurus oleh React.
Jika komponen pada mulanya menjadikan input tidak terkawal sebagai dikawal tanpa menentukan nilai awal, React akan bangkitkan amaran seperti yang anda nyatakan:
"Satu komponen sedang menukar input teks jenis yang tidak terkawal untuk dikawal. Elemen input tidak seharusnya bertukar daripada tidak terkawal kepada terkawal (atau sebaliknya)".
Dalam kod yang disediakan:
render() { return( <div className="form-group"> <input value={this.state.fields["name"]} onChange={this.onChange.bind(this, "name")} className="form-control" type="text" refs="name" placeholder="Name *" /> <span style={{color: "red"}}>{this.state.errors["name"]}</span> </div> ) }
Isu timbul kerana dalam pembina, medan dimulakan sebagai objek kosong: medan: {}. Ini bermakna pada mulanya, this.state.fields.name tidak akan ditentukan. Akibatnya, medan input akan menjadi tidak terkawal. Walau bagaimanapun, apabila pengguna memasukkan nilai, keadaan mengemas kini, menjadikan input sebagai komponen terkawal. Tingkah laku tidak konsisten ini mencetuskan amaran React.
Penyelesaian Kemungkinan:
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, memfokuskan pada aspek soalan dan konteks ReactJS: 1. **Input Terkawal lwn. Tidak Terkawal dalam Reaksi: Bagaimana untuk Mengelakkan Amaran \'Keadaan Bertukar\'?** 2. **Semula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!