reactjs - 在打字稿类中设置未定义的属性
问题描述
我有一个看起来像这样的课程
export class TestScreen extends Component<any, LoginScreenState> {
private wallet: Wallet;
async connect() {
this.wallet = WAL.accessContext.initWallet(getWalletProviders()[0]);
....
}
render() {
return (
<div>
<button onClick={this.connect}>Connect</button>
<br />
</div>
);
}
}
我收到以下错误
Unhandled Rejection (TypeError): Cannot set property 'wallet' of undefined
我理解这个错误,但我不确定这里使用的正确模式是什么。我只想在运行 connect() 时设置该值。
我不想将对象初始化为一些垃圾,然后将其替换为以太。感觉好像我在这里遗漏了一些明显的东西。
解决方案
在this
TypeScript 中可能非常棘手。正如@ecraig12345 在评论中指出的那样,这种this
行为实际上来自 JavaScript。在传递方法的引用时,在某些情况下您会丢失上下文。这个答案提供了很好的解释。您还可以在TypeScript 文档中了解更多相关信息。
在您的情况下,我建议您执行以下操作。这是一种很常见的语法。
onClick={e => this.connect(e)}
推荐阅读
- sql - 显示列中重复项的单个结果并包括剩余的表结果
- javascript - 如何以角度在 I-Frame 和父窗口之间进行通信
- three.js - 如何添加一个对象取决于三个js中的线(墙)?
- reactjs - React Apexcharts 不适用于 Typescript
- .net - 在 Heroku 上托管 .NET5 worker
- javascript - 我从我的提取请求中收到 400 错误请求错误:“需要非空请求正文”,尽管我的提取请求有一个正文
- sql - 为什么Plsql包变量和常量不能在Sql中使用?
- asp.net-mvc - ASP.NET MVC:SortBy 列表问题
- javascript - 当与 bootstrap 5 modal (ckeditor 4) 一起使用时,ckeditor 的弹出输入字段不起作用
- powershell - 无需等待输入即可使用 PowerShell 启动程序