DOM и React Senior Состояние и useState/useReducer обновлено

Производное состояние с ключом

Условие

Компонент показывает черновик комментария к посту. При смене postId черновик обнуляется, но введённый текст между сменами сохраняется. Менять сигнатуру нельзя - решай внутри.

Что проверяют тесты

  • хранит ввод

  • сбрасывает при смене поста

  • не сбрасывает на том же посте

Как подойти

Официально рекомендованный React способ подстроить состояние под пропс без useEffect: сравнение с предыдущим значением прямо в рендере. Это выглядит странно, но работает корректно - React немедленно перезапускает рендер того же компонента, не трогая детей, и лишнего кадра не возникает. Через useEffect пользователь на один кадр увидел бы старый черновик. Когда сбрасывается всё состояние целиком, вместо этого проще сменить key.

Подсказки: 2
  1. Сравни пропс с его же значением из прошлого рендера, сохранённым в состоянии.
  2. Обновление состояния прямо в теле рендера допустимо, если оно условное и сразу же перезапускает рендер.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.