Сколько useState можно считать нормальным на одном экране?
Вопрос от разработчика React: «Гуру React, подскажите, сколько useState можно считать нормальным на одном экране? У меня 25 штук, многие из них булевые. Уже стоит беспокоиться или можно ещё добавить?»
Количество useState на одном экране не фиксировано и зависит от контекста, но 25 хуков, особенно если среди них много булевых, - это сигнал для рефакторинга. Основные проблемы не в цифре, а в структуре и управлении состоянием. Вот рекомендации:
- Для булевых состояний: объединяйте их в один объект или используйте
useReducer, чтобы избежать множества отдельных хуков. Например, вместо 10isOpenModal1,isOpenModal2и т.д. создайте объект{ modal1: false, modal2: true }. - Выводите общие паттерны: если состояния зависят друг от друга, рассмотрите кастомные хуки или контекст. Например, для сложных форм используйте библиотеки типа React Hook Form или Formik.
- Оптимизируйте производительность: каждый useState вызывает повторный рендер при обновлении. Если у вас 25 хуков, частые изменения могут снижать производительность. Используйте
useMemo,useCallbackи мемоизацию. - Нормальная практика: для небольших экранов или простых компонентов 5-10 useState - обычное дело. 25 - верхняя граница, после которой стоит пересмотреть архитектуру.
Итоговый совет: не паникуйте из-за числа 25, но проведите рефакторинг, чтобы уменьшить дублирование и улучшить читаемость кода. Если все работает быстро и сложность управляема, можно оставить. Однако при росте экрана или добавлении логики - переходите на useReducer или глобальное состояние (Redux, Zustand).