我写了一些代码:
函数渲染渲染(元素:React.Component<;any,any>;){
返回<;span>;您好,<;Elem/>;!<;/span>;;
}
我得到一个错误:
JSX元素类型
Elem没有任何构造或调用签名
这是什么意思
这是构造函数和实例之间的混淆
请记住,在React中编写组件时:
类迎宾扩展React.Component<;任何,任何>;{
render(){
return<;div>;您好,{this.props.whoToGreet}<;/div>;;
}
}
您可以这样使用它:
返回<;欢迎whoToGreet='world'/>;;
您不可以这样使用它:
let Greet=new Greet();
返回<;欢迎世界各地的人;;
在第一个示例中,我们将传递组件的Greeter,构造函数。这是正确的用法。在第二个示例中,我们将传递问候者的实例。这是不正确的,并且在运行时将失败,并出现类似“的错误”;对象不是函数
此代码的问题
函数渲染渲染(元素:React.Component<;any,any>;){
返回<;span>;您好,<;Elem/>;!<;/span>;;
}
它需要一个实例的React.Component。您需要的是一个函数,它为React.Component接受构造函数:
函数renderGreeting(Elem:new()=>;React.Component<;any,any>;){
返回<;span>;您好,<;Elem/>;!<;/span>;;
}
或类似地:
函数渲染渲染(元素:反应组件的类型){
返回<;span>;您好,<;Elem/>;!<;/span>;;
}