Выбор ответа Senior Рендер и reconciliation обновлено

Один тип на одной позиции

Вопрос

Сначала isAdmin равен false, счётчик накликали до 5. Затем isAdmin стал true. Что покажет счётчик?

{isAdmin
  ? <Counter label="Админ" />
  : <Counter label="Гость" />}

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

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

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

Коротко

Правильный ответ: 5: тот же тип на той же позиции, state сохранился. React видит на одной позиции элемент того же типа Counter и переиспользует экземпляр, меняя только props.

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

  1. 0: это другой Counter, он смонтирован заново
  2. 5: тот же тип на той же позиции, state сохранилсяправильный ответ
  3. 5, но в StrictMode: без него счётчик сбросится
  4. Ошибку: два одинаковых компонента в тернарнике

Разбор

React видит на одной позиции элемент того же типа Counter и переиспользует экземпляр, меняя только props. State привязан к позиции, а не к ветке кода. Чтобы получить отдельный state, дайте разные key или поставьте компоненты на разные позиции. StrictMode на это не влияет, ошибки нет.

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

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