我见过一个带有回调的 React setState 方法,这意味着在确保设置新状态并重新渲染组件后将执行回调,例如这个例子:

this.setState({value: event.target.value}, function () {
    console.log(this.state.value);
}); //new state will be logged to console after it was set and rendered

现在,如果我不是完全错了,同样的事情可以使用 async 来实现
职能:
async someFunction(){
await this.setState({value: event.target.value});
console.log(this.state.value);
}

我现在的问题是,如果我在一个函数中使用多个 await setState 调用会影响性能吗?它会在每次 setState 调用后重新渲染并等待它完成渲染过程,然后执行 net await setState 调用等并可能产生性能问题吗?例如:
async someFunction(){
await this.setState({value: event.target.value});
let result = await someAPICall();
await this.setState({resultApiCall: result});
await.....
}

最佳答案

是的,你完全错了 :) setState 不返回 promise ,因此你不能只是 await 它。当然,您可以将回调包装到 promise 中,但您可能不需要它(因为您通常不需要等待重新渲染)。



当然。调用函数两次估计比调用一次慢两倍。



是的,如果你想 await 一个 Promise,像这样:

 await new Promise(resolve => this.setState(/*...*/, resolve));



不,可能不是。调用 setState 会执行得非常快,你必须调用它数百次才能影响性能。

关于javascript - React.js : Will multiple async setState method calls always re-render after and impact performance?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56925527/

10-13 02:13