reactjs - React 类组件具有属性,但 Typescript 说它没有
问题描述
我遇到了 React ref 和类组件的问题。
我的简化代码如下。我们看到我有一个名为的组件Engine
,它有一个属性getInfo
。我做了一个测试,this.activeElement &&
这意味着它不是null
,所以它必须是React.ReactElement<Engine>
. getInfo
但是,Typescript 编译器失败,并出现错误,如下面的屏幕截图所示,它没有属性。
class Engine extends React.Component {
getInfo(count: number): void {
console.log('info count:', count);
}
}
class Wizard extends React.Component {
activeElement: null | React.ReactElement<Engine>
topLevelGetInfo(): void {
this.activeElement && this.activeElement.getInfo(10);
}
handleRef = (el: null | React.ReactElement<Engine>) => this.activeElement = el;
render() {
return (
<div>
<Engine ref={this.handleRef} />
</div>
)
}
}
我的 tsconfig.json:
{
"compilerOptions": {
"module": "es6",
"target": "es6",
"sourceMap": true,
"jsx": "react",
"baseUrl": "src",
"strict": true,
"lib": ["dom", "es2017"],
"moduleResolution": "node",
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"exclude": [
"node_modules",
"build",
"build_test"
]
}
解决方案
看起来你的Wizard
和Engine
类没有从React.Component
. 尝试像这样更新您的类声明:
class Engine extends React.Component {
...
render() { return null; }
}
class Wizard extends React.Component {
...
}
此外,请确保包含组件所需的render()
方法<Engine />
(即如图所示)。
这是codeandbox.io上的一个工作示例-希望对您有所帮助:-)
推荐阅读
- python - 错误如下: ValueError: cannot convert float NaN to integer
- h2o - 禁用 H2O 流 UI
- javascript - JSON没有从PHP解析javascript
- amazon-dynamodb - 使用 DynamoDB 表在 Spanner 中创建表
- linux - 如何从bash中的另一个命令发送函数结果?
- machine-learning - 无法训练我的 keras 模型:(数据基数不明确:)
- mongodb - 如何在 mongodb 中使用 EmbeddedDocumentListField 中的另一个字段的值设置一个字段?
- java - ServerSocketChannel.socket() 在 close() 之后仍然绑定
- druid - HDFS 作为深度存储:Druid 不在 hdfs 上存储历史数据
- sql - 从不是“0”SQL的第一个位置提取字符串