10 решений в React-проектах, которые усложняют код
🔵 Использование нескольких стейт-менеджеров одновременно. Redux для глобального стейта, Zustand для фичи, TanStack Query для данных и локальный useState для UI - слоёный пирог вместо системы.
🔵 Использование тяжёлых библиотек там, где достаточно нативного решения. TanStack Query для одного GET-запроса. React Hook Form для формы из двух полей без валидации.
🔵 Кастомные хуки с избыточной абстракцией. Хук useFormControl, который внутри использует useState, useEffect и useCallback, но лишь оборачивает один инпут вместо прямого использования useState.
🔵 Контексты на каждый чих. \ для открытия/закрытия модалок, хотя достаточно useState и пропсов. Теперь чтобы открыть модалку, нужно обернуть всё в провайдер.
🔵 Микро-оптимизации без профилирования. React.memo везде, useMemo для примитивов, useCallback для стабильных функций - без доказательств необходимости.
🔵 Своя «дизайн-система» из 5 компонентов Кастомные , , \ без темизации, accessibility и продуманного API.
🔵 Роутинг с условиями в компонентах. Проверки прав, feature-flags и A/B-тесты прямо в рендере - вместо middleware-роутера.
🔵 Сторонние SDK прямо в компонентах. Инициализация аналитики, платежек и чатов в useEffect (без слоя абстракции и cleanup).
🔵 Монолитные хуки бизнес-логики. useProduct, который содержит всё (данные, действия, подписки) вместо разделения ответственности.
🔵 Типизация «как умею». В TypeScript-проекте повсюду any, as и Partial, strict выключен, интерфейсы повторяют структуру ответа API один-в-один, а ошибки типов всплывают только в рантайме, сводя всю пользу статического анализа к нулю.
ИТОГИ ❔
Раздутый бандл, размытая ответственность, сложный онбординг и затруднённый рефакторинг. Часто это следствие копипаста или следования трендам без оценки целесообразности. Ну или следы вайбкодинга.
· 03.01
Плохая декомпозиция компонентов. Чтобы был вот прям огромный, жирный компонентище, который делает все: куча логики, растасканной по эффектам, тут же сложный ui, а еще если внутри одного файла фактически не один компонент… ммм песня 🥲
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён