> Есть ли проблемы при инициализации useState функцией в React и как их решить (React)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: IT-One

Стек: React

> Пример ответа

При инициализации useState функцией в React есть одна ключевая проблема: если передать вызов функции напрямую (например, useState(expensiveComputation())), эта функция будет выполняться при каждом рендере, даже если её результат нужен только один раз. Это может привести к снижению производительности, если функция выполняет тяжёлые вычисления.

Решение: Используйте ленивую инициализацию - передайте в useState функцию, которая будет вызвана только один раз при первом рендере. Пример:

JSX
const [state, setState] = useState(() => expensiveComputation());

В этом случае React вызовет переданную функцию только при монтировании компонента, сохранит её результат как начальное состояние и не будет повторять вызов при последующих рендерах.

Дополнительный нюанс: Если функция использует пропсы или другие переменные, которые могут измениться до первого рендера, ленивая инициализация может привести к использованию устаревших значений. В таких случаях лучше вычислить начальное состояние вручную или использовать useEffect для синхронизации.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью