Katakanlah saya memiliki daftar objek polos this.state.list
yang kemudian dapat saya gunakan untuk membuat daftar anak-anak. Lalu bagaimana cara yang benar untuk memasukkan objek this.state.list
?
Di bawah ini adalah satu-satunya cara yang menurut saya akan berhasil karena Anda tidak dapat memutasi this.state
secara langsung seperti yang disebutkan dalam dokumen.
this._list.push(newObject):
this.setState({list: this._list});
Ini tampak jelek bagi saya. Apakah ada cara yang lebih baik?
javascript
reactjs
Khoi
sumber
sumber
Jawaban:
concat
mengembalikan array baru, jadi Anda bisa melakukannyaalternatif lain adalah pembantu keabadian React
sumber
concat
mengambil sebuah array, jadi Anda akan menginginkannyathis.state.list.concat([newObject])
.concat
dalamnya akan membungkusnya dalam array, tetapi lebih baik menambahkan array sendiri agar eksplisit: jika Anda memiliki[[1,2], [3,4]]
dan ingin menambahkan[5,6]
sebagai elemen berikutnya, Anda perlu melakukan yang.concat([[5,6]])
lain Anda akan berakhir dengan[[1,2], [3,4], 5, 6]
.Array.concat
pasti lebih baik menambahkan perpustakaan lain.setState () bisa dipanggil dengan fungsi sebagai parameter:
atau di ES5:
sumber
this.setState((state) => ({ list: state.list.push(newObj) }))
NUMBER
, yang akan disetel padalist
variabelthis.setState((state) => ({ list: [...state.list, newObj] }))
Perbarui 2016
Dengan ES6 Anda dapat menggunakan:
sumber
...[newObject]
sama dengan adilnewObject
.Dari dokumen react ( https://facebook.github.io/react/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous ):
Jadi Anda harus melakukan ini sebagai gantinya:
sumber