Javascript 使用Typescript TS2604错误动态导入ES6 React组件?
我正在尝试从如下模块动态导入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
状态:{
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
)。请注意,您编辑该问题时没有通知我,所以我今天检查并看到了编辑,真是幸运。当有人向你询问更多信息,你将其添加到问题中时,最好添加一条评论以通知他们。