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

我在我的组件中使用 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: {}

  }

}

但是状态没有更新,有人知道为什么吗?


偶然的你
浏览 97回答 1
1回答

临摹微笑

this.setState(newState)是异步的(或者至少可以是异步的)。将日志语句放在下一行将不起作用,因为尚未设置状态。在您需要知道 setState 何时完成的极少数情况下,您可以提供一个回调作为 setState 的第二个参数,一旦完成就会调用它:this.setState(  newState,   () => {     console.log(this.state);  })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript