错误“JSX元素类型“…”没有任何构造或调用签名”是什么意思?

我写了一些代码:

函数渲染渲染(元素: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>;
}

发表评论