Ini adalah kebingungan antara konstruktor dan instance .
Ingat bahwa ketika Anda menulis komponen di Bereaksi:
class Greeter extends React.Component<any, any> {
render() {
return <div>Hello, {this.props.whoToGreet}</div>;
}
}
Anda menggunakannya dengan cara ini:
return <Greeter whoToGreet='world' />;
Anda tidak menggunakannya dengan cara ini:
let Greet = new Greeter();
return <Greet whoToGreet='world' />;
Dalam contoh pertama, kita sedang melewati Greeter, fungsi konstruktor untuk komponen kita. Itu penggunaan yang benar. Pada contoh kedua, kami membagikan turunan dari Greeter. Itu salah, dan akan gagal saat runtime dengan kesalahan seperti "Objek bukan fungsi".
Masalah dengan kode ini
function renderGreeting(Elem: React.Component<any, any>) {
return <span>Hello, <Elem />!</span>;
}
adalah bahwa ia mengharapkan turunan dari React.Component. Apa yang Anda inginkan fungsi yang mengambil konstruktor untuk React.Component:
function renderGreeting(Elem: new() => React.Component<any, any>) {
return <span>Hello, <Elem />!</span>;
}
atau serupa:
function renderGreeting(Elem: typeof React.Component) {
return <span>Hello, <Elem />!</span>;
}
@types/reactpaling mudah digunakanfunction RenderGreeting(Elem: React.ComponentType) { ... }