Несмотря на то, что они выполняются асинхронно, маловероятно, что при тестировании с одного и того же браузера и / или на одном и том же оборудовании вы увидите отклонения. Различные браузеры оптимизируют наборы инструкций немного по-разному, что является лучшим выбором для проверки производительности (и почему тестирование во всех основных браузерах для настольных компьютеров по-прежнему рекомендуется, несмотря на то, что коммерческий Chrome часто "достаточно хорош").
Лучший способсделать это - при условии, что вы хотите, чтобы они запускались в определенном порядке - это связать вызов setState
следующим образом:
handleClick = () => {
this.setState({ counter: this.state.counter + 1 }, () => {
this.setState({ hasButtonBeenClicked: this.state.counter > 0 })
});
}
Но я бы порекомендовал другой дизайн независимо - связывая логику hasButtonBeenClicked
к счетчику собирается ввести проблемы по линии.