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

Patricia Arquette
Lepaskan: 2024-10-27 03:06:03
asal
913 orang telah melayarinya

Here are a few title options, focusing on the question aspect and ReactJS context:

1. **Controlled vs. Uncontrolled Inputs in React: How to Avoid the

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>
  )
}
Salin selepas log masuk

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:

  1. Tetapkan nilai lalai awal: Mulakan medan dalam pembina dengan nilai lalai untuk nama, seperti "nama": "". Ini memastikan bahawa medan input bermula sebagai komponen terkawal dengan nilai yang ditentukan.
  2. Gunakan penilaian litar pintas: Tetapkan atribut nilai input kepada yang berikut: value={this. state.fields.name || ''}. Ini menilai kepada rentetan kosong jika this.state.fields.name tidak ditentukan, memastikan medan input bermula seperti dikawal walaupun tanpa nilai lalai yang ditentukan.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan