Mengapa mengklik kotak pilihan membatalkan pilihan sebelumnya dalam React?
P粉729198207
P粉729198207 2023-08-13 10:57:24
0
1
650
<p>Saya mempunyai berbilang kotak pilihan dan apabila saya mengklik pada satu kotak pilihan dan seterusnya, kotak pilihan sebelumnya akan dinyahpilih, adakah anda tahu mengapa? </p> <p>Ini ialah komponen kotak semak saya: </p> <pre class="brush:php;toolbar:false;">const Kotak Semak = ({ kunci, id, label, ditandai, nama, onChange }:mana-mana) => kembali ( <div className="checkbox-wrapper"> <masukkan kunci berbilang={id} id={id} type="checkbox" checked={checked} name={name} onChange={onChange} /> <label htmlFor={id}>{label}</label> </div> ) }</pre> <p>Beginilah rupa komponen utama, data hadir dalam tatasusunan dan kemudian dipetakan, tetapi saya tidak pasti mengapa ia menyahpilih kotak semak sebelumnya, saya telah mengalih keluar banyak kod JSX lain yang tidak berguna: < /p> <pre class="brush:php;toolbar:false;">const checkboxSenarai = [ { id:0, label:"huruf besar", nama: "atas", diperiksa:false }, { id:1, label:"huruf kecil", nama: "lebih rendah", diperiksa:false }, { id:2, label: "nombor", nama: "nombor", diperiksa:false }, { id:3, label: "simbol", nama: "simbol", diperiksa:false } ] const PasswordGenerator = () => const [data, setData] = useState(Senarai kotak semak) const handleChange = (id:number) => const updateCheckboxes = checkboxList.map((checkbox) => checkbox.id === id ? {...checkbox, checked: !checkbox.checked}:checkbox) setData(kemas kiniKotakSemak) } kembali ( <div className="elemen"> {data.map((obj) => { kembali( <kunci div={obj.id}> <Kotak semak berbilang={benar} id={obj.id} label = {obj.label} checked= {obj.checked} nama= {obj.name} onChange = {() => handleChange(obj.id)} /> </div> ) })} </div> ) }</pre> <p><br /></p>
P粉729198207
P粉729198207

membalas semua(1)
P粉662361740

Apabila anda mengemas kini keadaan, anda mengemas kini daripada tatasusunan asal, bukan keadaan semasa. Daripada memetakan daripada tatasusunan asal (Senarai kotak semak), peta daripada nilai semasa keadaan (data):

const handleChange = (id:number) => {
  const updateCheckboxes = data.map((checkbox) => 
    checkbox.id === id ? {...checkbox, checked: !checkbox.checked}:checkbox)

  setData(updateCheckboxes)
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan