Вы решили проблему с пробросом пропсов через десять уровней и вынесли всё в Redux. 🎉 Поздравляю. Только что заложили себе мину на год вперед.

Команда задолбалась тащить данные через всю иерархию. Код не читается, все на нервах из за регулярного жонглирования пропсами. 😩 Приходит спасатель. Предлагает стейт-менеджер. В принципе все равно какой - Redux, Zustand, MobX. Гениальная мысль: давайте сложим всё в кучу наверху. 🦸‍♂️ Сначала выглядит хорошо. Компоненты стали чище. Селекторы аккуратные. Диспатчи не мельтешат. 👀 Ты смотришь на компонент и думаешь - ну да, данные из селектора, все прозрачно.

Потом ты пытаешься понять, как всё это хозяйство работает. Открываешь модалку. Логика должна быть внутри. А нет. Где-то глубоко в таблице, в ячейке, диспатчится событие, которое выносит состояние формы. 💥 Ты в ступоре. Откуда? Почему?

Глобальное состояние создает иллюзию порядка. 🧼 Компоненты по отдельности выглядят логично. А связность всего проекта вырастает в разы. 📈 Раньше ты открывал компонент и видел поток данных. Всё предсказуемо. Сейчас любой кусок интерфейса может дернуть что угодно. 🎛️ И ты ничего с этим не сделаешь.

Всё потому, что состояние должно жить на своих уровнях, а не в одной куче. Вот как это выглядит по-нормальному: 🧩 Локальный уровень — useState, useReducer. Туда кладем состояние инпута, открыта или закрыта модалка. Микрососотояние в микрокомпоненте. 🏗️ Компонентный уровень — Context или локальный стор в пределах фичи. Там живут данные формы, кэш запросов на странице. То, что нужно группе компонентов, но не всему приложению. 🌍 Глобальный уровень — Redux или Zustand на уровне app. Сюда отправляем только реально общее: пользователя, авторизацию, тему, уведомления. Всё. Остальное — ниже.

Если смешать всё в кучу, ты теряешь картину целиком. Вместо дерева компонентов получаешь клубок проводов. Каждый тянется в неизвестность. 🕸️

Я не против стейт-менеджеров. Но глобальное состояние в чистом виде — это антипаттерн. Его должно быть по минимуму. Максимум — поднять состояние над React, но не на весь проект. Используйте медиатор паттерн. Подключайтесь к менеджеру точечно. 🔌

Иначе получите проблему хуже проброса пропсов. Лучше взять жирный компонент с кучей пропсов и видеть поток данных, чем проект на глобальном стейте, где всё тайно связано со всем. 🧨

Вы решили проблему с пробросом пропсов через десять уровней и вынесли всё в Redux. 🎉 Поздравляю. Только что заложили себе мину на год вперед.
Команда задолбалась тащить данные через всю иерархию | Сетка — социальная сеть от hh.ru