Выбор ответа Junior Состояние и useState/useReducer обновлено
Производное значение
Вопрос
Как правильнее хранить полное имя, если в state уже есть firstName и lastName?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Вычислять в рендере: firstName + " " + lastName. Всё, что можно вычислить из props и state, вычисляется прямо в рендере: значение всегда согласовано и не требует синхронизации.
Варианты ответа
- Отдельный
useStateдляfullName, обновлять вuseEffect - Хранить в
useRef, чтобы не было лишних рендеров - Вычислять в рендере:
firstName + " " + lastNameправильный ответ - Хранить только
fullNameи разбивать его по пробелу
Разбор
Всё, что можно вычислить из props и state, вычисляется прямо в рендере: значение всегда согласовано и не требует синхронизации. Отдельный state с эффектом даёт лишний рендер и риск рассинхрона. useRef не вызывает рендер, и на экране останется старое имя. Разбивать по пробелу ненадёжно: имена бывают составными.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Состояние и useState/useReducer»
- Батчинг
- Ленивая инициализация state
- Функциональный апдейтер
- useReducer
- Апдейтер вперемешку со значением
- Ленивая инициализация
- Props, скопированные в state
- Правила хуков