Ответ вслух Middle Архитектура состояния обновлено

Выбор менеджера состояния

Вопрос

Как выбрать, где хранить состояние: useState, контекст, внешний стор?

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

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

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

Коротко

Порядок по возрастанию цены. Локальное useState - по умолчанию.

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

  • сначала локальное состояние - по умолчанию

  • подъём состояния до общего предка, пока это не превращается в prop drilling

  • контекст - для редко меняющихся общих данных: тема, пользователь, локаль

  • внешний стор - когда обновления частые и точечные

  • серверные данные - отдельно, в react-query или SWR

  • URL - тоже хранилище: фильтры и вкладки должны быть в адресе

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

  • Почему Redux перестал быть выбором по умолчанию
  • Что положить в URL, а что нет
  • Как понять, что пора уходить с контекста

Разбор

Порядок по возрастанию цены. Локальное useState - по умолчанию. Общий предок, если состояние нужно двум соседям. Контекст - для редко меняющегося общего: тема, текущий пользователь, локаль.

Внешний стор (Zustand, Redux Toolkit, Jotai) появляется, когда обновления частые и точечные, и контекст начинает перерисовывать полдерева, - то есть по конкретной проблеме, а не заранее.

Отдельно стоит серверное состояние: кэш, устаревание, повторы, гонки - это react-query, а не Redux.

И то, о чём забывают: URL - полноценное хранилище. Фильтры, вкладки, страница пагинации должны жить в адресе, иначе пользователь не может поделиться ссылкой, а кнопка «назад» работает неожиданно.

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

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