отреагировать на установку, не переходя - PullRequest
0 голосов
/ 03 июля 2018

У меня есть следующее:

  onTransfer = async () => {
    this.setState({loading: true});
    try {
      const accounts = await web3.eth.getAccounts();
      await this.props.myData.methods.transferBalanceToOwner().send({
        from: accounts[0]
      });

      let contractBalance;
      await web3.eth.getBalance(this.props.address).then(function(result) {
        contractBalance = web3.utils.fromWei(result);
      });
      console.log('contract balance: ', contractBalance);

      this.setState({ contractBalance });
    } catch (error) {
      console.log('Transfer to owner error: ',error)
    }
    this.setState({loading: false});  
  }

и у меня есть следующее в моем рендере ()

if (this.state.isOwner) {
  ownerUI = (
    <Container>
      <Divider/>
      <p>Contract balance: {this.state.contractBalance}</p>
      <Button loading={this.state.loading} onClick={this.onTransfer} primary>Transfer Balance</Button>
    </Container>
  )
}

По какой-то причине остаток по договору не обновляется после OnTransfer. Может кто-то определить, что я могу делать не так? Спасибо!

1 Ответ

0 голосов
/ 03 июля 2018

Это неправильный способ использования async/await.

  1. С async/await нет , тогда в состоянии
  2. Поместите оператор await в блок try/catch для проверки success/error.

Правильный способ сделать это.

let contractBalance;

try {
   //success check

  contractBalance = await web3.eth.getBalance(this.props.address)
  this.setState({contractBalance});

}
catch (rejectedValue) {
  //error check

  console.log(rejectedValue)
}
...