Назад к задачам
Junior — Senior
3

Устранить баги и повысить эффективность

Компании, где спрашивали:

СБЕРСБЕР
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В данном примере рассматривается простое React‑приложение, где главный функциональный компонент получает объект с данными и использует хуки useState и useEffect. Компонент запускает таймер, который каждую секунду увеличивает счётчик, а также выполняет некоторые тяжёлые расчёты, зависящие от остальных полей объекта.

Требуется исправить потенциальные проблемы (например, утечку ресурсов из‑за незавершённого интервала) и улучшить производительность, корректно задав зависимости в эффектах.

import { useEffect, useState, FC } from "react";

const userData = {
  name: "54",
  age: 21,
  info: 22
};

const MainComponent: FC<typeof userData> = ({ name, ...restProps }) => {
  const [counter, setCounter] = useState(0);

  useEffect(() => {
    const id = setInterval(() => {
      setCounter(prev => prev + 1);
    }, 1000);
    return () => clearInterval(id);
  }, []);

  useEffect(() => {
    // .... сложные вычисления, использующие restProps
  }, [restProps]);

  return <div>{counter}</div>;
};

export const App = () => <MainComponent {...userData} />;

Задача подразумевает рефакторинг кода, исправление ошибок и оптимизацию работы компонентов.