Первое правило — разделить состояние по природе:
| вид | пример | инструмент |
|---|---|---|
| локальное | открыт ли выпадающий список | useState |
| общее клиентское | тема, корзина, авторизация | Context, Zustand, Redux Toolkit |
| серверное | список заказов | TanStack Query, RTK Query, SWR |
| в адресе | фильтры, номер страницы | параметры URL |
| формы | поля и ошибки | React Hook Form |
Что важно знать
- Большинство «глобального состояния» на деле — кэш серверных данных; специализированные библиотеки дают кэширование, повторы, обновление в фоне и инвалидацию.
- Context — передача данных вглубь, а не менеджер состояния: при изменении значения перерисовываются все подписчики.
- Redux Toolkit — предсказуемость, devtools, строгая структура; хорош для больших команд. Zustand — минимум кода.
- Не класть всё в глобальное хранилище: чем ближе состояние к месту использования, тем проще код.