EDIT: ini duplikat, lihat di sini
Saya tidak dapat menemukan contoh menggunakan nama kunci dinamis saat mengatur negara. Inilah yang ingin saya lakukan:
inputChangeHandler : function (event) {
this.setState( { event.target.id : event.target.value } );
},
di mana event.target.id digunakan sebagai kunci negara untuk diperbarui. Apakah ini tidak mungkin di Bereaksi?
Jawaban:
Berkat petunjuk Cory, saya menggunakan ini:
Jika menggunakan ES6 atau Babel transpiler untuk mengubah kode JSX Anda, Anda dapat melakukannya juga dengan nama properti yang dihitung :
sumber
computed property names
trad
, inilah yang saya cari untuk menghindari duplikasi kode untuk<Radio />
implementasi.this.setState({ [event.target.id]: event.target.value });
lalu bagaimana Anda mengakses keadaan itu menggunakanthis.state......
?Saat Anda perlu menangani beberapa elemen input yang dikontrol, Anda dapat menambahkan atribut nama ke setiap elemen dan membiarkan fungsi handler memilih apa yang harus dilakukan berdasarkan nilai event.target.name.
Sebagai contoh:
sumber
this.state([event.target.name])
?Bagaimana saya mencapai ini ...
sumber
this.forceUpdate();
yang seharusnya tidak terjadi dengan React terbaru. Mari kita lihat apa masalahnya nanti !!Saya hanya ingin menambahkan, bahwa Anda juga dapat menggunakan de-structuring untuk memperbaiki kode dan membuatnya terlihat lebih rapi.
sumber
Sejalan dengan
.map
pekerjaan seperti ini:Perhatikan parameter
[]
dalamtype
. Semoga ini membantu :)sumber
Saya punya masalah serupa.
Saya ingin mengatur keadaan di mana kunci level 2 disimpan dalam variabel.
misalnya
this.setState({permissions[perm.code]: e.target.checked})
Namun ini bukan sintaks yang valid.
Saya menggunakan kode berikut untuk mencapai ini:
sumber
Dengan ES6 + Anda bisa melakukannya [
${variable}
]sumber
Saya mencari solusi yang cantik dan sederhana dan saya menemukan ini:
Semoga ini membantu
sumber
Harap perhatikan karakter kutipan.
sumber
Keadaan Anda dengan kamus memperbarui beberapa kunci tanpa kehilangan nilai lainnya
Solusinya ada di bawah
disini perbarui nilai untuk "halaman" kunci dengan nilai 5
sumber
Dapat menggunakan sintaks spread, seperti ini:
sumber