Оптимизация и рефакторинг React‑компонента
Компонент накапливает обработчики и интервалы, а таймеры захватывают старый count. Нужны очистка эффекта, актуальное значение через ref и согласованное обновление связанных count/items.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
Компонент накапливает обработчики и интервалы, а таймеры захватывают старый count. Нужны очистка эффекта, актуальное значение через ref и согласованное обновление связанных count/items.
Читать ответВ показанном обновлении нет нарушения иммутабельности: возвращается новый объект, а streak вычисляется из предыдущего состояния и актуальных props. Без дополнительных условий объявлять код ошибочным нельзя.
Читать ответИсправьте JSX и имя компонента с заглавной буквы. Подписку создавайте в эффекте с cleanup; не запускайте новый бесконечный интервал на каждый клик и каждый рендер.
Читать ответПодписка scroll в теле App создаётся на каждом рендере и никогда не удаляется. Для прилипающей панели обычно достаточно position: sticky; счётчик обновляйте функционально, повторяющиеся Item создайте из списка.
Читать ответБесконечный цикл заблокирует главный поток: DOM будет многократно изменяться, но браузер не получит возможности нормально отрисовывать новые числа и обрабатывать ввод.
Читать ответДобавьте отдельное состояние user и обновляйте name через новый объект. Остальной JSX сохраните; обработчик новой кнопки не должен мутировать прежний объект состояния.
Читать ответВторая кнопка не планирует рендер: она мутирует count2.name, но вообще не вызывает setCount2. Изменение может проявиться позже при обновлении другого состояния.
Читать ответДобавьте стабильный key в список, типизируйте Todo и не выводите img без imagesrc. Для поиска можно нормализовать регистр; управляемый input уже реализован правильно.
Читать ответПосле имени переменной поставьте двоеточие и тип, затем при необходимости начальное значение: let age: number = 25. Компилятор проверит последующие присваивания.
Читать ответВ коде две опечатки: 100wh нужно заменить на 100vh, а ls — на 1s. После исправления элемент будет за секунду перемещаться снизу к исходной позиции.
Читать ответsetCoordinate не меняет coordinate в текущем замыкании, поэтому handleUpload отправляет предыдущее значение. Передавайте в Service.send координату непосредственно из события.
Читать ответИспользуйте настоящий input type='checkbox' внутри label и отдельный декоративный трек. Состояние checked управляет цветом фона и сдвигом круга на 26px.
Читать ответ