Gunakan React untuk mendapatkan nilai kotak pilihan yang dipilih
P粉590929392
2023-09-02 22:36:49
<p>Saya cuba mendapatkan semula nilai kotak pilihan yang telah ditanda dan menyimpannya ke dalam tatasusunan.
Saya cuba: </p>
<pre class="brush:php;toolbar:false;">arr.push(setNewItem(checked))
arr.push(e.target.value.checked)
arr.push(item.disemak)</pra>
<p>Tetapi ini mengembalikan nilai jenis yang salah atau tidak ditentukan. </p>
<pre class="brush:php;toolbar:false;">const [checkedItems, setCheckedItems] = useState([]);
const handleChange = (e) =>
if (e.target.checked) {
var arr = [...checkedItems];
//arr.push(setNewItem(e.target.value.checked));
setCheckedItems(arr);
console.log(arr);
} lain {
checkedItems = "";
}
setIsChecked((semasa) => !semasa);
};</pre>
<pre class="brush:php;toolbar:false;">return (
<div className="App">
<StyleForm>
<StyleInput
type="teks"
pemegang tempat="Tambah"
value={newItem}
onChange={(e) => setNewItem(e.target.value)}
onKeyPress={handleOnKeyPress}
/>
<ButtonAddStyle onClick={() => addItem()}>Add</ButtonAddStyle>
<StyleUl>
{items.map((item) => {
kembali (
<Kunci StyleLi={item.id}>
<StyleCheckBox
type="kotak semak"
value={isChecked}
onChange={handleChange}
/>
{item.value}
{""}
<ButtonDelStyle onClick={() => deleteItem(item.id)}>
X
</ButtonDelStyle>
</StyleLi>
);
})}
</StyleUl>
</StyleForm>
</div>
);</pra>
Ini boleh menyelesaikan masalah anda.
adalah cara yang betul untuk menghilangkan:
Anda tidak boleh mengemas kini status dengan cara ini, apabila anda cuba menyahtanda input, ralat akan muncul:
Sekarang mari lihat apa yang anda mahu lakukan, setiap kali anda memilih input yang anda simpan
e.target.checked
,所以checkedItems
ia akan kelihatan seperti ini:Kenapa anda perlukan ini? Pendekatan yang lebih baik ialah menyimpan id item yang dipilih:
Kemudian dalam jsx:
Sekarang lihat ini:
Anda lulus cangkuk useState
items
进行映射,创建多个复选框,但它们都共享相同的值。而复选框的值属性并不是你想象的那样,请在这里了解更多。所以你可以使用value={item.id}
为每个输入设置一个唯一的值,并且可以摆脱isChecked
, yang anda benar-benar tidak perlukan.