我在我的组件中使用 Formik,其中使用如下方法调用addMetadata(values) { console.log(values); let newState = update(this.state, { pro: { $set: values} }); console.log(newState); // this point result print as expected this.setState(newState); console.log(this.state); // but here state not showing update result }我的状态看起来像this.state = { pro: { key1: '', key2: [] key3: {} }}但是状态没有更新,有人知道为什么吗?
1 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
this.setState(newState)是异步的(或者至少可以是异步的)。将日志语句放在下一行将不起作用,因为尚未设置状态。
在您需要知道 setState 何时完成的极少数情况下,您可以提供一个回调作为 setState 的第二个参数,一旦完成就会调用它:
this.setState(
newState,
() => {
console.log(this.state);
}
)
添加回答
举报
0/150
提交
取消