Javascript 使用Typescript TS2604错误动态导入ES6 React组件?

Javascript 使用Typescript TS2604错误动态导入ES6 React组件?,javascript,reactjs,typescript,dynamic-import,Javascript,Reactjs,Typescript,Dynamic Import,我正在尝试从如下模块动态导入React组件: 状态:{ OsdComponent:React.Component } 建造师(道具){ 超级(道具) 此.state={ OsdComponent:null, } } 异步组件willmount(){ const{OsdComponent}=等待导入(`manifest viewer`) this.setState({OsdComponent}) } 然后尝试在渲染中这样使用它: render(){ const{OsdComponent}=thi

我正在尝试从如下模块动态导入React组件:

状态:{
OsdComponent:React.Component
}
建造师(道具){
超级(道具)
此.state={
OsdComponent:null,
}
}
异步组件willmount(){
const{OsdComponent}=等待导入(`manifest viewer`)
this.setState({OsdComponent})
}
然后尝试在渲染中这样使用它:

render(){
const{OsdComponent}=this.state
if(OsdComponent){
}
}
但Typescript编译失败,因为“TS2604:JSX元素类型”OsdComponent“没有任何构造或调用签名。”


该代码在另一个未使用Typescript编译的模块中工作

语法中,
Foo
必须是组件类型(即,对于适当的
p
,类型为
React.ComponentType
);例如,
Foo
可以是您定义的组件类的名称。React将在渲染期间为您创建组件类型的实例。您不会传入您自己创建的组件实例(例如,
let Bar=new Foo();
);这是没有道理的。但这就是您试图使用的
OsdComponent
,因为您已将其类型声明为
React.Component
。将类型更改为
React.ComponentType
(这可能是动态导入实际返回的内容),错误应该会消失。(当然,最好至少指定props类型,而不是使用
any

包含引用方法的组件类的状态类型可能是错误的。请将该类的声明添加到问题中(例如,
类MyComponent extends React.Component
)。请注意,您编辑该问题时没有通知我,所以我今天检查并看到了编辑,真是幸运。当有人向你询问更多信息,你将其添加到问题中时,最好添加一条评论以通知他们。