Использовали ли чистый Redux, RTK или RTK Query и как их оцениваете
Что проверяют
Понимаете ли вы, зачем вообще нужно глобальное состояние, и отличаете ли состояние сервера от состояния интерфейса.
Как отвечать
Пройдите по эволюции и дайте оценку каждому этапу:
- чистый Redux: предсказуемое хранилище с одним потоком обновлений, отличная отладка с путешествием по действиям. Цена это шаблонный код: константы, действия, редьюсеры, обвязка для асинхронности через
thunkилиsaga. Сегодня писать так с нуля незачем; - Redux Toolkit: официальный способ.
createSliceубирает шаблон, встроен Immer (можно писать «мутирующий» код, получая новое состояние),createAsyncThunkдля запросов, разумные настройки по умолчанию с проверками на случайные мутации; - RTK Query: слой для серверных данных поверх того же хранилища. Даёт кеш по ключу, состояния загрузки и ошибки, инвалидацию по тегам после мутаций, дедупликацию одинаковых запросов, повторные попытки. По сути закрывает то же, что React Query, но внутри экосистемы Redux.
Главная мысль для оценки: большая часть состояния, которую раньше клали в Redux, это ответы сервера, и для них нужен кеш, а не хранилище. Поэтому связка выглядит так: серверные данные в RTK Query или React Query, а в глобальном хранилище остаётся немногое, вроде текущего пользователя, темы, состояния мастера из нескольких шагов.
Полезно добавить, что для небольших приложений часто хватает контекста и локального состояния, а из легковесных хранилищ берут Zustand или Jotai.
Где спотыкаются
Кладут в глобальное хранилище всё подряд, включая значения полей формы.
Пишут на чистом Redux новый проект и тратят время на шаблон.
Дублируют серверные данные: держат их и в кеше запроса, и в срезе хранилища, а потом синхронизируют вручную.