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

Производное значение

Вопрос

Как правильнее хранить полное имя, если в state уже есть firstName и lastName?

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

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

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

Коротко

Правильный ответ: Вычислять в рендере: firstName + " " + lastName. Всё, что можно вычислить из props и state, вычисляется прямо в рендере: значение всегда согласовано и не требует синхронизации.

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

  1. Отдельный useState для fullName, обновлять в useEffect
  2. Хранить в useRef, чтобы не было лишних рендеров
  3. Вычислять в рендере: firstName + " " + lastNameправильный ответ
  4. Хранить только fullName и разбивать его по пробелу

Разбор

Всё, что можно вычислить из props и state, вычисляется прямо в рендере: значение всегда согласовано и не требует синхронизации. Отдельный state с эффектом даёт лишний рендер и риск рассинхрона. useRef не вызывает рендер, и на экране останется старое имя. Разбивать по пробелу ненадёжно: имена бывают составными.

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

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