Выбор ответа Junior Состояние и useState/useReducer спрашивают часто обновлено
Три setCount подряд
Вопрос
Начальное значение count равно 0. Чему будет равно count после клика?
function handleClick() {
setCount(count + 1);
setCount(count + 1);
setCount(count + 1);
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 1. Внутри обработчика count это снимок текущего рендера, он равен 0.
Варианты ответа
- 1правильный ответ
- 3
- 0
- Зависит от скорости клика
Разбор
Внутри обработчика count это снимок текущего рендера, он равен 0. Все три вызова просят установить 0 + 1, то есть 1. Чтобы получить 3, нужен функциональный апдейтер c => c + 1. Ноль неверен: обновление всё же произойдёт. Скорость клика ни на что не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Состояние и useState/useReducer»
- Производное значение
- Стабильность dispatch
- Батчинг
- Ленивая инициализация state
- Функциональный апдейтер
- useReducer
- Апдейтер вперемешку со значением
- Ленивая инициализация