Выбор ответа Junior Состояние и useState/useReducer спрашивают часто обновлено

Значение сразу после setState

Вопрос

Что покажет alert, если до клика name было "Аня"?

function rename() {
  setName('Оля');
  alert(name);
}

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

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

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

Коротко

Правильный ответ: "Аня". setName не меняет переменную name, а планирует новый рендер.

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

  1. "Оля"
  2. "Аня"правильный ответ
  3. undefined
  4. Сначала "Аня", потом "Оля"

Разбор

setName не меняет переменную name, а планирует новый рендер. В текущем замыкании обработчика name остаётся снимком "Аня". Новое значение будет доступно только в следующем рендере. undefined появиться неоткуда, а alert вызывается один раз.

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

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