Invarian Pelanggaran: benda-Benda yang tidak valid sebagai Bereaksi anak
Dalam komponen's membuat fungsi yang saya punya:
render() {
const items = ['EN', 'IT', 'FR', 'GR', 'RU'].map((item) => {
return (<li onClick={this.onItemClick.bind(this, item)} key={item}>{item}</li>);
});
return (
<div>
...
<ul>
{items}
</ul>
...
</div>
);
}
segala sesuatu yang membuat baik-baik saja, namun ketika mengklik <li>
elemen aku menerima galat berikut:
Tertangkap Error: Lain Pelanggaran: benda-Benda yang tidak valid sebagai Bereaksi anak (ditemukan: objek dengan tombol {dispatchConfig, dispatchMarker, nativeEvent, target, currentTarget, jenis, eventPhase, gelembung, dibatalkan, timeStamp, defaultPrevented, isTrusted, lihat, detail, screenX, screenY, clientX, clientY, ctrlKey, shiftKey, altKey, metaKey, getModifierState, tombol, tombol, relatedTarget, pageX, pageY, isDefaultPrevented, isPropagationStopped, _dispatchListeners, _dispatchIDs}). Jika anda bermaksud untuk membuat koleksi dari anak-anak, menggunakan sebuah array atau bukan membungkus objek menggunakan createFragment(objek) dari Bereaksi add-ons. Cek render metode
Selamat datang
.
Jika aku berubah menjadi ini.onItemClick.bind(this, item)
untuk (e) => onItemClick(e, item)
dalam peta fungsi yang semuanya bekerja seperti yang diharapkan.
Jika seseorang bisa menjelaskan apa yang saya lakukan salah dan menjelaskan mengapa saya mendapatkan error ini, akan menjadi besar
UPDATE 1: onItemClick fungsi adalah sebagai berikut dan menghapus ini.setState hasil dalam kesalahan menghilang.
onItemClick(e, item) {
this.setState({
lang: item,
});
}
Tapi aku tidak bisa menghapus baris ini yang saya butuhkan untuk memperbarui keadaan komponen ini
Saya mengalami kesalahan ini dan ternyata bahwa aku tidak sengaja termasuk Objek di BEJ kode yang saya harapkan untuk menjadi nilai string:
breadcrumbElement
digunakan untuk menjadi string tapi karena refactor telah menjadi sebuah Objek. Sayangnya, Bereaksi's pesan kesalahan didn't melakukan pekerjaan yang baik dalam menunjuk saya untuk garis di mana masalah yang ada. Aku harus mengikuti jejak stack semua jalan kembali sampai aku mengenali "alat peraga" diteruskan ke komponen dan kemudian saya menemukan kode menyinggung.Anda'll perlu referensi properti dari objek yang nilai string atau mengkonversi Objek untuk representasi string yang diinginkan. Salah satu pilihan yang mungkin
JSON.stringify
jika anda benar-benar ingin melihat isi dari Objek.Jadi saya punya kesalahan ini ketika mencoba untuk menampilkan
createdAt
property yang merupakan objek Tanggal. Jika anda menggabungkan.toString()
di akhir seperti ini, ia akan melakukan konversi dan menghilangkan kesalahan. Hanya postingan ini sebagai jawaban yang mungkin dalam kasus orang lain berlari ke dalam masalah yang sama:Aku hanya punya kesalahan yang sama namun karena berbagai kesalahan: saya menggunakan dua kawat gigi seperti:
untuk menyisipkan nilai
hitung
, bukan yang benar:yang kompilator mungkin berubah menjadi
{{count: menghitung}}
, yaitu mencoba untuk memasukkan sebuah Objek sebagai Bereaksi anak.Hanya pikir saya akan menambahkan untuk ini karena saya memiliki masalah yang sama hari ini, ternyata bahwa itu karena aku kembali hanya fungsi, ketika saya dibungkus dalam
<div>
tag itu mulai bekerja, seperti di bawah iniDi atas menyebabkan kesalahan. Saya tetap masalah dengan mengubah
return()
bagian untuk:...atau hanya:
Saya harus melakukan dengan tidak perlu menempatkan kurung kurawal sekitar variabel memegang sebuah elemen HTML di dalam pernyataan return dari render() fungsi. Hal ini membuat Bereaksi memperlakukannya sebagai obyek daripada sebuah elemen.
Setelah saya dihapus kurung kurawal dari elemen, kesalahan itu pergi, dan elemen diberikan dengan benar.
Saya harus melakukan dengan melupakan kurung kurawal seluruh alat peraga yang dikirim ke presentasi komponen:
Sebelumnya:
Setelah
Bereaksi anak(tunggal) harus jenis primitif tipe data bukan objek atau ini bisa menjadi JSX tag(yang tidak dalam kasus kami). Gunakan Proptypes paket dalam pengembangan untuk memastikan validasi terjadi.
Hanya potongan kode(BEJ) perbandingan untuk mewakili anda dengan ide :
TLDR; (Dari sumber di bawah ini) : pastikan semua barang-barang anda're rendering di BEJ adalah primitif dan tidak benda ketika menggunakan Bereaksi. Kesalahan ini biasanya terjadi karena fungsi yang terlibat dalam pengiriman sebuah acara yang telah diberikan tak terduga jenis objek (saya.e lewat sebuah objek ketika anda harus melewati sebuah string) atau bagian dari JSX dalam komponen anda tidak referensi primitif (yaitu ini.alat peraga lebih baik dari ini.alat peraga.nama).
Sumber - codingbismuth.com
Bagi siapa pun yang menggunakan Firebase dengan Android, ini hanya istirahat Android. IOS saya emulasi mengabaikan hal itu.
Dan seperti yang diposting oleh Apoorv Bankey di atas.
Apa pun di atas Firebase V5.0.3, untuk Android, atm adalah payudara. Fix:
Dikonfirmasi berkali-kali di sini https://github.com/firebase/firebase-js-sdk/issues/871
Saya juga mendapatkan "Benda yang tidak valid sebagai Bereaksi anak" kesalahan dan bagi saya penyebabnya adalah karena panggilan asynchronous fungsi di BEJ. Lihat di bawah ini.
Apa yang saya pelajari adalah bahwa asynchronous rendering tidak didukung dalam Bereaksi. Yang Bereaksi tim yang bekerja pada sebuah solusi seperti yang didokumentasikan di sini.
Saya juga punya masalah yang sama tapi kesalahan saya begitu bodoh. Saya mencoba untuk mengakses objek secara langsung.
Jika untuk beberapa alasan anda impor firebase. Kemudian coba jalankan
npm saya-simpan firebase@5.0.3
. Hal ini karena firebase istirahat bereaksi-asli, sehingga berjalan ini akan memperbaikinya.Dalam kasus saya itu saya lupa untuk kembali sebuah elemen html frm membuat fungsi dan aku kembali sebuah objek . Apa yang saya lakukan adalah hanya dibungkus {item} dengan elemen html - div sederhana seperti di bawah ini
Kau hanya menggunakan tombol objek, bukan seluruh objek!
Rincian lebih lanjut dapat ditemukan di sini: https://github.com/gildata/RAIO/issues/48
Saya memiliki masalah yang sama, dalam kasus saya, Saya meng-update redux negara, dan baru data parameter yang tidak sesuai dengan parameter lama, Jadi ketika saya ingin mengakses beberapa parameter melalui Kesalahan ini,
Mungkin pengalaman ini membantu seseorang
Masalah saya itu sederhana ketika saya menghadapi galat berikut:
hanya bahwa aku sedang melewati sebuah objek dengan tombol yang ditentukan dalam kesalahan ketika mencoba untuk membuat objek secara langsung pada komponen menggunakan {benda} mengharapkan untuk menjadi string
sementara render pada Bereaksi Komponen, saya menggunakan sesuatu seperti di bawah ini
tapi seharusnya
I'd ingin menambahkan solusi lain untuk daftar ini.
Spesifikasi:
Saya mengalami kesalahan yang sama:
Ini kode saya:
Solusi:
Masalah itu terjadi karena muatan mengirim item sebagai objek. Ketika aku melepaskan muatan variabel dan menempatkan userInput nilai ke pengiriman segala sesuatu mulai bekerja seperti yang diharapkan.
Jika menggunakan bernegara komponen, ikuti format semacam ini:
Hal ini tampaknya bekerja untuk saya
Jika dalam kasus anda menggunakan Firebase salah satu file dalam proyek anda. Kemudian hanya tempat yang impor firebase pernyataan di akhir!!
Aku tahu ini terdengar gila, tapi cobalah!!
Yang berarti anda melewati sesuatu adalah kunci-nilai. Jadi, anda perlu mengubah handler:
dari
untuk
Anda melewatkan keluar kurawal (
{}
).Aku punya kesalahan yang sama, aku berubah ini
ekspor default withAlert(Alert)
ini
ekspor default withAlert()(Alert)
.Dalam versi yang lebih tua mantan kode ok , tapi di versi melempar kesalahan. Jadi gunakan kemudian kode untuk menghindari errror.