Выбор менеджера состояния
Вопрос
Как выбрать, где хранить состояние: useState, контекст, внешний стор?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
сначала локальное состояние - по умолчанию
подъём состояния до общего предка, пока это не превращается в prop drilling
контекст - для редко меняющихся общих данных: тема, пользователь, локаль
внешний стор - когда обновления частые и точечные
серверные данные - отдельно, в react-query или SWR
URL - тоже хранилище: фильтры и вкладки должны быть в адресе
Что могут спросить следом
- Почему Redux перестал быть выбором по умолчанию
- Что положить в URL, а что нет
- Как понять, что пора уходить с контекста
Разбор
Порядок по возрастанию цены. Локальное useState - по умолчанию. Общий предок,
если состояние нужно двум соседям. Контекст - для редко меняющегося общего: тема, текущий
пользователь, локаль.
Внешний стор (Zustand, Redux Toolkit, Jotai) появляется, когда обновления частые и точечные, и контекст начинает перерисовывать полдерева, - то есть по конкретной проблеме, а не заранее.
Отдельно стоит серверное состояние: кэш, устаревание, повторы, гонки - это react-query, а не Redux.
И то, о чём забывают: URL - полноценное хранилище. Фильтры, вкладки, страница пагинации должны жить в адресе, иначе пользователь не может поделиться ссылкой, а кнопка «назад» работает неожиданно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.