> Есть ли проблемы при инициализации useState функцией в React и как их решить (React)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: IT-One
Стек: React
> Пример ответа
При инициализации useState функцией в React есть одна ключевая проблема: если передать вызов функции напрямую (например, useState(expensiveComputation())), эта функция будет выполняться при каждом рендере, даже если её результат нужен только один раз. Это может привести к снижению производительности, если функция выполняет тяжёлые вычисления.
Решение: Используйте ленивую инициализацию - передайте в useState функцию, которая будет вызвана только один раз при первом рендере. Пример:
JSXconst [state, setState] = useState(() => expensiveComputation());
В этом случае React вызовет переданную функцию только при монтировании компонента, сохранит её результат как начальное состояние и не будет повторять вызов при последующих рендерах.
Дополнительный нюанс: Если функция использует пропсы или другие переменные, которые могут измениться до первого рендера, ленивая инициализация может привести к использованию устаревших значений. В таких случаях лучше вычислить начальное состояние вручную или использовать useEffect для синхронизации.
> Похожие задачи по frontend
Можно ли условно вызывать хуки в React при разных рендерах
Как написать кастомный хук useState с колбэком при смене состояния в React
Корректно ли генерировать уникальный id для ключей в React при отсутствии id в данных с бэка и вызовет ли это проблемы с оптимизацией рендера
Как использовать useEffect и useState для загрузки и отображения данных в React
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью