Mengapakah saya mendapat ralat 'Invalid React Child' semasa memetakan tatasusunan dalam kaedah `render` saya?

Patricia Arquette
Lepaskan: 2024-11-06 15:31:03
asal
499 orang telah melayarinya

Why am I getting the

Ralat Reaksi: Kanak-kanak Reaksi Tidak Sah

Ralat ini berlaku apabila kaedah pemaparan cuba untuk menjadikan kanak-kanak Reaksi tidak sah, yang boleh berlaku apabila mengembalikan tatasusunan atau objek dan bukannya elemen React yang sah.

Dalam kes anda, ralat disebabkan oleh merujuk kaedah terikat this.onItemClick.bind(this, item) terus dalam fungsi peta. Untuk membetulkannya, anda harus menggunakan fungsi anak panah sebaliknya:

<code class="javascript">render() {
    const items = ['EN', 'IT', 'FR', 'GR', 'RU'].map((item) => {
      return (<li onClick={(e) => this.onItemClick(e, item)} key={item}>{item}</li>);
    });

    // ...
}</code>
Salin selepas log masuk

Fungsi anak panah mencipta skop baharu di mana nilai ini terikat pada contoh komponen, membolehkan anda mengakses fungsi onItemClick.

Memahami Mesej Ralat

Mesej ralat termasuk maklumat berikut:

  • Objek tidak sah sebagai anak React: Menunjukkan bahawa anak yang tidak sah ialah objek.
  • dispatchConfig, dispatchMarker, nativeEvent, ...: Menyenaraikan sifat objek acara, yang dihantar sebagai argumen pertama kepada pengendali onClick.
  • Semak kaedah pemaparan Selamat Datang: Tuding kepada komponen yang ralat berlaku (dengan mengandaikan komponen itu dinamakan "Selamat Datang").

Nota Tambahan

  • Fungsi Anak Panah Mengikat: Fungsi anak panah tidak mempunyai pengikatan ini sendiri, jadi ia secara automatik terikat pada skop di mana ia ditakrifkan.
  • Keadaan Kemas Kini: Anda masih boleh mengemas kini keadaan komponen dalam fungsi anak panah dengan menggunakan kaedah setState dengan fungsi panggil balik:
<code class="javascript">onClick={(e) => this.setState((prevState) => ({ lang: item }))}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah saya mendapat ralat 'Invalid React Child' semasa memetakan tatasusunan dalam kaedah `render` saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!