首页 > 解决方案 > 在打字稿类中设置未定义的属性

问题描述

我有一个看起来像这样的课程

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() 时设置该值。

我不想将对象初始化为一些垃圾,然后将其替换为以太。感觉好像我在这里遗漏了一些明显的东西。

标签: reactjstypescript

解决方案


thisTypeScript 中可能非常棘手。正如@ecraig12345 在评论中指出的那样,这种this行为实际上来自 JavaScript。在传递方法的引用时,在某些情况下您会丢失上下文。这个答案提供了很好的解释。您还可以在TypeScript 文档中了解更多相关信息。

在您的情况下,我建议您执行以下操作。这是一种很常见的语法。

onClick={e => this.connect(e)}

推荐阅读