setState не обновляет React Native - PullRequest
1 голос
/ 04 мая 2020

Я пытаюсь получить состояние от одного компонента, но почему-то не вижу никаких изменений, когда делаю setState (). Вот мое состояние:

class MyTestComponent extends React.Component {
    constructor(props){
    super(props);

    this.state = {
        check: 'String1'
    }
   this.testOtherFunction = this.testOtherFunction.bind(this);
}

Теперь вот сама функция:

   testOtherFunction(){
            this.setState({check: "String2"},
            function(){
               console.log(this.state.check, 'total'); // somewhy is not printed
            });
      return this.state.check;
  }

А здесь, в другом компоненте, я вызываю эту функцию:

componentDidMount() {

 console.log("test", MyTestComponent.testOtherFunction()) // returns String1
  }

Почему он возвращает старое состояние из конструктора? И как я могу это исправить? Я знаю, что setState isyn c, но мне интересно, как выйти из подобных ситуаций.

1 Ответ

1 голос
/ 04 мая 2020

setState() не изменяет немедленно это состояние. Доступ к this.state после вызова этого метода может потенциально вернуть существующее значение. Вот почему вы можете не увидеть новое значение сразу.

вы можете использовать setState с функцией обратного вызова.

this.setState({check: "String2"},, function () {
    console.log(this.state.check, 'total');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...