Ответ вслух Middle Context и стейт-менеджеры обновлено

Redux Toolkit или Zustand

Вопрос

Чем Redux Toolkit отличается от Zustand, и что бы ты выбрал для нового проекта?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Оба решения держат состояние вне React и дают компоненту подписаться на срез через селектор, поэтому перерисовка точечная. Разница в философии.

Что должно прозвучать в ответе

  • Оба внешние сторы с подпиской через селекторы, перерисовка только при изменении среза

  • RTK: единый стор, экшены и редьюсеры, Immer, DevTools с историей, middleware, RTK Query

  • Zustand: стор как хук, без провайдера и бойлерплейта, минимальный API

  • RTK оправдан в большой команде и сложной доменной логике, где важны предсказуемость и трассировка

  • Zustand хорош для небольшого и среднего клиентского состояния

  • Серверные данные в обоих случаях лучше вынести в Query-библиотеку

Что могут спросить следом

  • Как в Zustand избежать лишних перерисовок при выборе нескольких полей?
  • Что такое middleware в Redux и для чего он?
  • Зачем RTK использует Immer?

Разбор

Оба решения держат состояние вне React и дают компоненту подписаться на срез через селектор, поэтому перерисовка точечная. Разница в философии.

Redux Toolkit это единый стор, где изменения идут только через экшены и чистые редьюсеры. createSlice убрал бойлерплейт, внутри редьюсера можно писать мутирующий код благодаря Immer. Плюсы: строгая предсказуемость, DevTools с историей экшенов, middleware для логирования и побочных эффектов, RTK Query для серверных данных. Это хорошо масштабируется на большую команду.

Zustand это стор-хук без провайдера: create возвращает хук, в нём состояние и функции. Очень мало кода, легко начать. Нужно аккуратно писать селекторы: если возвращать объект, нужен useShallow.

Для нового проекта я бы сначала вынес серверные данные в TanStack Query. Часто после этого клиентского состояния остаётся мало, и хватает Zustand или даже Context. RTK выбрал бы, если доменная логика сложная, команда большая и нужна строгая трассировка изменений.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме