Выбор ответа Middle Состояние и useState/useReducer обновлено

Апдейтер вперемешку со значением

Вопрос

count равен 0. Чему он будет равен после клика?

function handleClick() {
  setCount(c => c + 1);
  setCount(5);
  setCount(c => c + 1);
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 6. React обрабатывает очередь по порядку: c = c + 1 даёт 1, затем значение 5 заменяет результат, затем c = c + 1 даёт 6.

Варианты ответа

  1. 1
  2. 5
  3. 6правильный ответ
  4. 7

Разбор

React обрабатывает очередь по порядку: c => c + 1 даёт 1, затем значение 5 заменяет результат, затем c => c + 1 даёт 6. Ответ 1 получился бы, если бы считался только первый вызов. 5 получилось бы без последнего апдейтера. 7 возникло бы, если бы апдейтеры применялись к значению 5 дважды.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.