Выбор ответа Junior Состояние и useState/useReducer спрашивают часто обновлено
Значение сразу после setState
Вопрос
Что покажет alert, если до клика name было "Аня"?
function rename() {
setName('Оля');
alert(name);
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: "Аня". setName не меняет переменную name, а планирует новый рендер.
Варианты ответа
- "Оля"
- "Аня"правильный ответ
- undefined
- Сначала "Аня", потом "Оля"
Разбор
setName не меняет переменную name, а планирует новый рендер. В текущем замыкании обработчика name остаётся снимком "Аня". Новое значение будет доступно только в следующем рендере. undefined появиться неоткуда, а alert вызывается один раз.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Состояние и useState/useReducer»
- Производное значение
- Стабильность dispatch
- Батчинг
- Ленивая инициализация state
- Функциональный апдейтер
- useReducer
- Апдейтер вперемешку со значением
- Ленивая инициализация