Ceritanya, saya harus bisa memasukkan Bob, Sally dan Jack ke dalam sebuah kotak. Saya juga dapat menghapus keduanya dari kotak. Saat dilepas, tidak ada slot yang tersisa.
people = ["Bob", "Sally", "Jack"]
Sekarang saya perlu menghapus, katakan, "Bob". Array baru akan menjadi:
["Sally", "Jack"]
Inilah komponen react saya:
...
getInitialState: function() {
return{
people: [],
}
},
selectPeople(e){
this.setState({people: this.state.people.concat([e.target.value])})
},
removePeople(e){
var array = this.state.people;
var index = array.indexOf(e.target.value); // Let's say it's Bob.
delete array[index];
},
...
Di sini saya menunjukkan kepada Anda kode minimal karena ada lebih dari itu (onClick dll). Bagian kuncinya adalah menghapus, membuang, menghancurkan "Bob" dari larik tetapi removePeople()
tidak berfungsi saat dipanggil. Ada ide? Saya melihat ini tetapi saya mungkin melakukan sesuatu yang salah karena saya menggunakan React.
javascript
arrays
reactjs
Sylar
sumber
sumber
array.splice(array, 1);
Terima kasiharray.splice(array, 1);
? Saya kira Anda perlu mengeditnya .. Anda harus menggunakan variabel yang berbeda ...setState()
.Saat menggunakan React, Anda tidak boleh mengubah status secara langsung. Jika sebuah objek (atau
Array
, yang juga merupakan objek) diubah, Anda harus membuat salinan baru.Orang lain menyarankan untuk menggunakan
Array.prototype.splice()
, tetapi metode itu mengubah Array, jadi lebih baik tidak digunakansplice()
dengan React.Paling mudah digunakan
Array.prototype.filter()
untuk membuat array baru:sumber
this.setState(prevState => ({ people: prevState.people.filter(person => person !== e.target.value) }));
this.state.people.filter((_, i) => i !== index)
Berikut adalah variasi kecil pada respon Aleksandr Petrov menggunakan ES6
sumber
Gunakan
.splice
untuk menghapus item dari larik. Dengan menggunakandelete
, indeks larik tidak akan diubah tetapi nilai indeks tertentu akan diubahundefined
Sintaksis:
array.splice(start, deleteCount[, item1[, item2[, ...]]])
Edit:
Seperti yang ditunjukkan oleh justin-grant , Sebagai aturan praktis, Jangan pernah bermutasi
this.state
secara langsung, karena meneleponsetState()
setelahnya dapat menggantikan mutasi yang Anda buat. Perlakukanthis.state
seolah-olah itu tidak bisa diubah.Alternatifnya adalah, membuat salinan objek
this.state
dan memanipulasi salinan, menugaskannya kembali menggunakansetState()
.Array#map
,Array#filter
dll. dapat digunakan.sumber
setState
. Jawaban lain memiliki detail tentang cara melakukan ini.Cara Mudah Untuk Menghapus Item Dari array negara di react:
ketika ada data yang dihapus dari database dan daftar pembaruan tanpa panggilan API saat itu Anda meneruskan id yang dihapus ke fungsi ini dan fungsi ini menghapus dihapus yang dihapus dari daftar
sumber
item.post_id !== deletePostId
Beberapa jawaban disebutkan menggunakan 'sambungan', yang sama seperti yang dikatakan Chance Smith, memutasikan larik. Saya akan menyarankan Anda untuk menggunakan panggilan Metode 'slice' (Dokumen untuk 'slice' ada di sini) yang membuat salinan dari array asli.
sumber
Ini Sangat Sederhana Pertama Anda Tentukan nilai
Sekarang,
sumber
Anda lupa menggunakan
setState
. Contoh:Tetapi lebih baik digunakan
filter
karena tidak mengubah array. Contoh:sumber
Redfer dokumen untuk info lebih lanjut
sumber