在打字稿类中设置未定义的属性

时间:2019-03-16 21:51:28

标签: reactjs typescript

我有一堂课,看起来像这样

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。感觉好像我在这里遗漏了一些明显的东西。

1 个答案:

答案 0 :(得分:4)

this在TypeScript中可能非常棘手。正如@ ecraig12345在评论中指出的,this行为实际上来自JavaScript。传递方法的引用时,在某些情况下会丢失上下文。 This answer提供了很好的解释。您还可以在TypeScript documentation中进一步了解。

对于您的情况,建议您执行以下操作。这是一种非常常见的语法。

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