Misalkan saya memiliki komponen bernama MyComponent
.
Menggunakan MyComponent
seperti ini berfungsi:
render() {
return <MyComponent />;
}
tetapi menyimpan MyComponent
dalam variabel dan kemudian mencoba menggunakannya tidak:
render() {
var anAlias = MyComponent;
return <anAlias />;
}
Ini menghasilkan kesalahan berikut:
error TS2339: Property 'anAlias' does not exist on type 'JSX.IntrinsicElements'.
Alih-alih menggunakan TSX, gunakan React.createElement
:
render() {
var anAlias = MyComponent;
return React.createElement(anAlias);
}
anAlias
adalah elemen JSX intrinsik karena dimulai dengan huruf kecil . Elemen intrinsik dicari di antarmuka JSX.IntrinsicElements dan dalam kasus Anda mungkin tidak memiliki anggota anAlias
. Coba buat huruf besar sehingga akan diperlakukan sebagai elemen berbasis nilai .
Vlad menutupinya -- ini adalah perilaku yang sama yang akan Anda lihat dengan trafo JSX biasa (pengidentifikasi huruf kecil diperlakukan sama dengan div
atau span
)
Terima kasih. Saya tidak menyadari perbedaan antara elemen intrinsik dan elemen berbasis nilai dan saya tidak tahu bahwa casing huruf pertama signifikan.
Komentar yang paling membantu
anAlias
adalah elemen JSX intrinsik karena dimulai dengan huruf kecil . Elemen intrinsik dicari di antarmuka JSX.IntrinsicElements dan dalam kasus Anda mungkin tidak memiliki anggotaanAlias
. Coba buat huruf besar sehingga akan diperlakukan sebagai elemen berbasis nilai .