React: React.PropTypes.node harus menerima komponen (fungsi) stateless

Dibuat pada 22 Nov 2015  ·  3Komentar  ·  Sumber: facebook/react

Saya baru saja mengganti beberapa komponen reaksi yang didefinisikan menggunakan kelas es6 dan saya sekarang mendapatkan peringatan tentang komponen stateless reaksi saya (yang hanya berfungsi) bukan ReactNode.

Warning: Failed propType: Invalid prop `Loader` supplied to `Picture`, expected a ReactNode.

Saya memvalidasi beberapa komponen menggunakan React.PropTypes.node , tetapi sekarang saya perlu menggunakan PropTypes.oneOfType([ PropTypes.node, PropTypes.func ]) yang tampaknya agak lama untuk mengatakan "ini bisa berupa apa saja yang dapat dirender sebagai komponen" (yaitu ProTypes.node seharusnya menutupi kan?).

Dari dokumen

    // Anything that can be rendered: numbers, strings, elements or an array
    // (or fragment) containing these types.
    optionalNode: React.PropTypes.node,

Mungkin func harus ditambahkan? Atau adakah alasan mengapa node tidak menangani func juga?

Komentar yang paling membantu

Bisakah Anda menunjukkan bagaimana Anda menggunakan ini? Saya tidak berpikir Kelas Komponen seharusnya valid untuk node juga. node seharusnya menerima apa pun yang dapat dirender. Kelas tidak dapat dirender secara langsung - Anda akan melewatkan elemen dengan set tipe.

Semua 3 komentar

Bagaimana dengan menambahkan validator propType baru? Sesuatu seperti

propTypes: {
    optionalComponent: React.PropTypes.component
}

di mana komponen akan memiliki bentuk

PropTypes.oneOfType([ PropTypes.node, PropTypes.func ])

atau sesuatu yang serupa. Menurut pendapat saya cukup berbahaya untuk membiarkan orang melewati fungsi, tetapi saya tidak yakin bagaimana membuat validasi yang lebih baik. Membaca function.toString sepertinya merupakan peretasan raksasa yang tidak akan berfungsi setelah minifikasi, tetapi ini adalah satu-satunya opsi yang saya ketahui.

Bisakah Anda menunjukkan bagaimana Anda menggunakan ini? Saya tidak berpikir Kelas Komponen seharusnya valid untuk node juga. node seharusnya menerima apa pun yang dapat dirender. Kelas tidak dapat dirender secara langsung - Anda akan melewatkan elemen dengan set tipe.

Ya Tuhan. Kamu sangat benar. Aku merasa bodoh. Saya kira saya memvalidasi sesuatu dengan cara yang buruk. Maaf untuk kebisingan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat