Реактивное состояние не обновляется с помощью функции обновления помощника неизменяемости - PullRequest
0 голосов
/ 05 апреля 2020

Привет, я использую 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 Ответ

1 голос
/ 05 апреля 2020

this.setState(newState) является асинхронным (или, по крайней мере, может быть). Поместить оператор log в следующую строку не будет, потому что состояние еще не было установлено.

В редких случаях, когда вам нужно знать, когда setState завершен, вы можете предоставить обратный вызов в качестве второго аргумента setState, который будет вызван после его завершения:

this.setState(
  newState, 
  () => { 
    console.log(this.state);
  }
)
...