Будет ли выполняться код после setState () в React? - PullRequest
1 голос
/ 11 марта 2019

Попытка понять работу setState () в React. У меня вопрос такой.

Если у меня есть функция, в которой одна из строк установлена ​​setState (), будут ли строки кода ПОСЛЕ этой строки все еще выполняться до перерисовки? Например, в приведенном ниже коде,

foo(value) {
     this.setState({stateValue: value});
     console.log("Stuff after setState");
}

В этом коде гарантированно ли работает console.log? Он запускается, когда я тестирую его, но я не уверен, что это только потому, что React еще не успел сделать повторную визуализацию. Можно ли ожидать выполнения кода после this.setState ()?

Ответы [ 2 ]

6 голосов
/ 11 марта 2019

setState является функцией asynchronous и, как любая асинхронная функция, передается в цикл обработки событий, setState также передается в цикл обработки событий, и любой код после ее выполнения будет казаться бесполезным.

Как только метод setState завершит выполнение, он вызовет метод рендеринга, то есть когда React будет работать с рендером документа.

1 голос
/ 11 марта 2019

Давайте посмотрим документацию setState

Думайте о setState () как о запросе, а не как о немедленной команде для обновления компонента

Реакция не гарантируетчто изменения состояния применяются немедленно

Думайте об этом как setTimeout(function test() {...}, 0); сообщение будет добавлено в очередь, функция test не будет запущена, пока весь стек не опустеет.Вы можете найти больше информации в документации EventLoop

...