在调用setState之后,即使在setState的回调中,状态也保持不变

时间:2020-08-19 09:41:35

标签: reactjs debugging callback updates setstate

我正面临与setState相关的怪异错误。我知道它是异步的,因此我在console.log(this.state)的{​​{1}}函数中添加了callback,但是状态保持不变,并且应用程序上未反映任何更改。这是代码:

setState

if (response && response.data && response.data.data) { if (this._isMounted) { const arrangedSenderEmailAddresses = arrangeEmailAddresses(response.data.data); console.log('update data: ', arrangedSenderEmailAddresses); this.setState({ emailAddresses: arrangedSenderEmailAddresses }, () => { console.log('state after update: ', this.state.emailAddresses); }); } } 是从后端检索的对象。

response显示应在状态下但应在回调中设置的新数据:

console.log('update data: ', arrangedSenderEmailAddresses)显示旧状态。

有人遇到这样的错误吗?

1 个答案:

答案 0 :(得分:0)

即使在回调中,它也将使用状态的先前值,因为您将this.state传递到控制台日志,该日志不会在该回调中得到重新评估,但会获得旧状态


来自React docs

setState()的第二个参数是可选的回调函数,将在setState完成并重新渲染组件后执行。 通常,我们建议对这种逻辑使用componentDidUpdate()。