我有一堂课,看起来像这样
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()时设置该值。
我不想将对象初始化为一些垃圾,然后将其替换为ether。感觉好像我在这里遗漏了一些明显的东西。
答案 0 :(得分:4)
this
在TypeScript中可能非常棘手。正如@ ecraig12345在评论中指出的,this
行为实际上来自JavaScript。传递方法的引用时,在某些情况下会丢失上下文。 This answer提供了很好的解释。您还可以在TypeScript documentation中进一步了解。
对于您的情况,建议您执行以下操作。这是一种非常常见的语法。
onClick={e => this.connect(e)}