【发布时间】:2018-11-03 17:30:30
【问题描述】:
从 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);
});
}
但也无济于事。 有任何想法吗?
【问题讨论】:
标签: javascript reactjs async-await web3