Выбор ответа Middle Состояние и useState/useReducer обновлено
Props, скопированные в state
Вопрос
Родитель меняет проп color с "red" на "blue". Какой цвет покажет Swatch?
function Swatch({ color }) {
const [current] = useState(color);
return <div style={{ background: current }} />;
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: "red": начальное значение берётся один раз. Аргумент useState учитывается один раз, при монтировании.
Варианты ответа
- "blue": state обновится вслед за пропом
- "blue", но лишь после второго рендера
- "red": начальное значение берётся один разправильный ответ
- Ничего: React выбросит ошибку и не отрендерит
Разбор
Аргумент useState учитывается один раз, при монтировании. Последующие изменения color state не трогают, копия «застывает». Обычно нужно использовать проп напрямую, а если нужен сброс при смене, задать key. Предупреждений и отмены рендера React здесь не делает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.