У меня проблема с повторным отображением после получения результата от вызова web3 - выполнение умного контракта. Код ниже:
this.setState({ loading: true });
await contractInstance.methods
.myMethod(params)
.send({ from: myAccount, gas: 10000000 })
.then(async function(receipt) {
let txHash = receipt.transactionHash;
...
// await saveToDb(thHash, ...)
this.setState({ dateToDisplay: myVar.publishDate, loading: false });
..
и рендер выглядит следующим образом:
render() {
if (!this.state.loading) {
return (
...
{this.state.dateToDisplay}
У меня есть другие методы, где этот шаблон работает, но здесь я не мог заставить его работать. Я попытался сделать setState асинхронным и ждать его, например:
setStateAsync(state) {
return new Promise(resolve => {
this.setState(state, resolve);
});
}
Но тоже не помогает.
Есть идеи?