如何解决在调用setState之后,即使在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)
显示旧状态。
有人遇到这样的错误吗?
解决方法
即使在回调中,它也将使用状态的先前值,因为您将this.state
传递到控制台日志,该日志不会在该回调中得到重新评估,但会获得旧状态
来自React docs:
setState()的第二个参数是可选的回调函数,将在setState完成并重新渲染组件后执行。 通常,我们建议对这种逻辑使用componentDidUpdate()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。