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

Props, скопированные в state

Вопрос

Родитель меняет проп color с "red" на "blue". Какой цвет покажет Swatch?

function Swatch({ color }) {
  const [current] = useState(color);
  return <div style={{ background: current }} />;
}

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

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

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

Коротко

Правильный ответ: "red": начальное значение берётся один раз. Аргумент useState учитывается один раз, при монтировании.

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

  1. "blue": state обновится вслед за пропом
  2. "blue", но лишь после второго рендера
  3. "red": начальное значение берётся один разправильный ответ
  4. Ничего: React выбросит ошибку и не отрендерит

Разбор

Аргумент useState учитывается один раз, при монтировании. Последующие изменения color state не трогают, копия «застывает». Обычно нужно использовать проп напрямую, а если нужен сброс при смене, задать key. Предупреждений и отмены рендера React здесь не делает.

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

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