Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs JSX元素没有构造或调用签名_Reactjs_Typescript_Tsc - Fatal编程技术网

Reactjs JSX元素没有构造或调用签名

Reactjs JSX元素没有构造或调用签名,reactjs,typescript,tsc,Reactjs,Typescript,Tsc,创建一个HOC类,查看“child”类中设置的一组组件 这里有很多错误。我不理解这是一个HOC,或者它是如何工作的,因为属性this.Components没有设置在任何地方。高阶组件是接受组件并返回组件的函数。它可以是一个返回类的函数,但它本身不是一个类 您的问题中的特定错误是由于通用的C,它是this.Components中每个组件的类型。您已经说过,C可以是任何东西,因此它不必是有效的可调用组件。这就是为什么会出现“JSX元素类型‘Component’没有任何构造或调用签名”的错误。请去掉C

创建一个HOC类,查看“child”类中设置的一组组件


这里有很多错误。我不理解这是一个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)