为了账号安全,请及时绑定邮箱和手机立即绑定

使用不变性帮助程序更新功能不更新反应状态

使用不变性帮助程序更新功能不更新反应状态

偶然的你 2022-06-16 10:25:13
我在我的组件中使用 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);

  }

)


查看完整回答
反对 回复 2022-06-16
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信