Diberikan komponen sederhana yang menjadikan anak-anaknya:
class ContainerComponent extends Component {
static propTypes = {
children: PropTypes.object.isRequired,
}
render() {
return (
<div>
{this.props.children}
</div>
);
}
}
export default ContainerComponent;
Pertanyaan: Seperti apa seharusnya proptype anak-anak?
Ketika saya menetapkannya sebagai objek, itu gagal ketika saya menggunakan komponen dengan beberapa anak:
<ContainerComponent>
<div>1</div>
<div>2</div>
</ContainerComponent>
Peringatan: Gagal jenis prop: prop valid
children
jenisarray
dipasok keContainerComponent
, diharapkanobject
.
Jika saya mengaturnya sebagai array, itu akan gagal jika saya berikan hanya satu anak, yaitu:
<ContainerComponent>
<div>1</div>
</ContainerComponent>
Peringatan: Jenis penyangga gagal: Anak-anak penyangga tidak valid dari objek jenis yang dipasok ke ContainerComponent, array yang diharapkan.
Mohon saran, haruskah saya tidak repot-repot melakukan pemeriksaan propTypes untuk elemen anak-anak?
reactjs
jsx
react-proptypes
d3ming
sumber
sumber
node
Jawaban:
Coba sesuatu seperti ini menggunakan
oneOfType
atauPropTypes.node
atau
sumber
children
jenisobject
. ... diharapkan array"children: PropTypes.node
, yang bekerja untuk kedua kasus. Terima kasih atas sarannya =)React.PropTypes.node
menjelaskan objek apa pun yang dapat di render.PropTypes.node
. Itu menangani koreksi berikut: tidak ada, string, elemen tunggal, beberapa elemen, fragmen, komponen.Bagi saya itu tergantung pada komponennya. Jika Anda tahu apa yang Anda butuhkan untuk diisi maka Anda harus mencoba menentukan secara eksklusif, atau beberapa jenis menggunakan:
Namun saya kebanyakan menemukan, dengan komponen yang lebih umum yang dapat memiliki banyak jenis anak, saya senang menggunakan:
Jika Anda ingin merujuk ke komponen Bereaksi maka Anda akan mencari
Meskipun,
menjelaskan apa saja yang dapat diterjemahkan - string, angka, elemen atau array dari hal-hal ini. Jika ini cocok untuk Anda maka inilah caranya.
sumber
Proptypes.any
tipe yang terlalu umum. Eslint tidak senang dengan itu.Dokumentasi PropTypes memiliki yang berikut ini
Jadi, Anda dapat menggunakan
PropTypes.node
untuk memeriksa objek atau array objeksumber
Jawaban di sini tampaknya tidak cukup mencakup memeriksa anak-anak persis.
node
danobject
terlalu permisif, saya ingin memeriksa elemen yang tepat. Inilah yang akhirnya saya gunakan:oneOfType([])
untuk memungkinkan satu atau berbagai anakshape
danarrayOf(shape({}))
untuk lajang dan anak-anak, masing-masingoneOf
untuk elemen anak itu sendiriPada akhirnya, sesuatu seperti ini:
Masalah ini membantu saya memahami hal ini dengan lebih jelas: https://github.com/facebook/react/issues/2979
sumber
Jika Anda ingin mencocokkan jenis komponen dengan tepat, periksa ini
Jika Anda ingin mencocokkan dengan tepat beberapa jenis komponen, periksa ini
sumber
Coba propTipe khusus:
Biola
Tampilkan cuplikan kode
sumber
Contoh:
Gambar: Menunjukkan kesalahan Anda di konsol jika jenis yang diharapkan berbeda
sumber