【发布时间】:2018-10-19 10:06:18
【问题描述】:
我正在尝试从这样的模块中动态导入 React 组件:
state: {
OsdComponent: React.Component<any, any>
}
constructor(props) {
super(props)
this.state = {
OsdComponent: null,
}
}
async componentWillMount() {
const {OsdComponent} = await import(`manifest-viewer`)
this.setState({OsdComponent})
}
然后尝试在渲染中像这样使用它:
render() {
const {OsdComponent} = this.state
if (OsdComponent) {
<OsdComponent/>
}
}
但 Typescript 编译失败并显示“TS2604:JSX 元素类型“OsdComponent”没有任何构造或调用签名。”
代码在另一个未使用 Typescript 编译的模块中工作。
【问题讨论】:
-
包含您引用的方法的组件类的状态类型可能是错误的。请将该类的声明添加到问题中(例如,
class MyComponent extends React.Component<..., ...>)。 -
请注意,当您编辑问题时我没有收到通知,所以我很幸运今天回来查看并看到了编辑。当有人向您询问更多信息并且您将其添加到问题中时,最好添加评论以通知他们。
标签: javascript reactjs typescript dynamic-import