Reactjs JSX元素没有构造或调用签名
创建一个HOC类,查看“child”类中设置的一组组件Reactjs JSX元素没有构造或调用签名,reactjs,typescript,tsc,Reactjs,Typescript,Tsc,创建一个HOC类,查看“child”类中设置的一组组件 这里有很多错误。我不理解这是一个HOC,或者它是如何工作的,因为属性this.Components没有设置在任何地方。高阶组件是接受组件并返回组件的函数。它可以是一个返回类的函数,但它本身不是一个类 您的问题中的特定错误是由于通用的C,它是this.Components中每个组件的类型。您已经说过,C可以是任何东西,因此它不必是有效的可调用组件。这就是为什么会出现“JSX元素类型‘Component’没有任何构造或调用签名”的错误。请去掉C
这里有很多错误。我不理解这是一个HOC,或者它是如何工作的,因为属性
this.Components
没有设置在任何地方。高阶组件是接受组件并返回组件的函数。它可以是一个返回类的函数,但它本身不是一个类
您的问题中的特定错误是由于通用的
C
,它是this.Components
中每个组件的类型。您已经说过,C
可以是任何东西,因此它不必是有效的可调用组件。这就是为什么会出现“JSX元素类型‘Component’没有任何构造或调用签名”的错误。请去掉C
,使您的组件成为React.ComponentType
类型。这确保了它们可以通过JSX调用。您是否尝试将子组件传递给父组件并将其包装到HOC中?对于这个措词错误的问题,我深表歉意。在阅读您的答案时意识到,我已经切换到基于类的组件方法来解决我正在做的事情。谢谢你的回答。将Components:C[]
切换到Components:React.ComponentType[]
起到了治疗作用。
import * as React from 'react';
export class Container<C = any, P = {}> extends React.Component {
Components: C[]
props: React.PropsWithChildren<P>
render() {
return (
<>
{this.Components.map((Component: C, index) => {
return (
<Component key={index} />
)
})}
</>
)
}
}
JSX element type 'Component' does not have any construct or call signatures.ts(2604)