Saya ingin menggunakan solusi perusakan untuk menyusun ulang array saya di dalam wadah React saya yang seharusnya cukup lurus ke depan. Diberikan array a1 = ['hello', 'hi', 'hola']

componentDidMount() {
  const { a1 } = this.props
  this.a2 = []
  [a2[2], a2[0], a2[1]] = a1  --> this line give an error!!
  console.log('new ordered array', a2) // ['hola', 'hello', 'hi'] --> this print properly my new array
}

Jika saya mencoba untuk konsol log atau menggunakannya dalam render, saya mendapatkan undefined Kesalahan yang saya dapatkan di baris itu adalah:

Uncaught (in promise) TypeError: Cannot set property '#<Object>' of undefined

Saya benar-benar tidak mengerti mengapa saya dapat mencetak nilai dengan benar di console.log tetapi ketika saya mencoba untuk benar-benar menggunakannya dalam kode itu tidak berhasil. Ini mungkin sesuatu yang berhubungan dengan siklus Bereaksi? Saya juga mencoba menggunakannya dalam keadaan saya tetapi mendapat kesalahan yang sama.

3
Giorgia Sambrotta 17 Agustus 2017, 13:22

2 jawaban

Jawaban Terbaik

Baris ini memberi Anda kesalahan karena ini adalah salah satu kasus langka ketika penyisipan titik koma otomatis mengecewakan Anda. Jangan pernah memulai baris baru dengan ( atau [], jika tidak, interpreter menganggapnya sebagai kelanjutan dari baris sebelumnya dan memperlakukan [ atau ( sebagai operasi akses properti atau pemanggilan fungsi.

Ini akan bekerja:

this.a2 = [];
[a2[2], a2[0], a2[1]] = a1

Atau ini:

this.a2 = []
;[a2[2], a2[0], a2[1]] = a1
5
dfsq 17 Agustus 2017, 10:42

Ada . bukannya , di baris ini [a2[2], a2[0]. a2[1]] = a1 --> this line give an error!!

1
Saravanan I 17 Agustus 2017, 10:25