Выбор ответа Senior Рендер и reconciliation обновлено
Один тип на одной позиции
Вопрос
Сначала isAdmin равен false, счётчик накликали до 5. Затем isAdmin стал true. Что покажет счётчик?
{isAdmin
? <Counter label="Админ" />
: <Counter label="Гость" />}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 5: тот же тип на той же позиции, state сохранился. React видит на одной позиции элемент того же типа Counter и переиспользует экземпляр, меняя только props.
Варианты ответа
- 0: это другой
Counter, он смонтирован заново - 5: тот же тип на той же позиции, state сохранилсяправильный ответ
- 5, но в StrictMode: без него счётчик сбросится
- Ошибку: два одинаковых компонента в тернарнике
Разбор
React видит на одной позиции элемент того же типа Counter и переиспользует экземпляр, меняя только props. State привязан к позиции, а не к ветке кода. Чтобы получить отдельный state, дайте разные key или поставьте компоненты на разные позиции. StrictMode на это не влияет, ошибки нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.