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

Серверное состояние

Вопрос

Чем серверное состояние отличается от клиентского и зачем react-query?

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

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

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

Коротко

Клиентское состояние принадлежит нам: открыта ли модалка, что в форме. Серверное - копия чужих данных, которая устаревает сама по себе, без нашего действия.

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

  • серверные данные - чужие, они устаревают без нашего участия

  • нужен кэш, признак устаревания, фоновая перезагрузка

  • нужна дедупликация одинаковых запросов и отмена гонок

  • нужны состояния загрузки, ошибки и повтора

  • класть это в Redux - писать половину react-query руками

  • клиентское состояние - модалки, фильтры, форма - остаётся локальным

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

  • Что такое stale-while-revalidate
  • Как инвалидировать кэш после мутации
  • Когда Redux всё-таки оправдан

Разбор

Клиентское состояние принадлежит нам: открыта ли модалка, что в форме. Серверное - копия чужих данных, которая устаревает сама по себе, без нашего действия.

Из этого вытекает всё, что нужно: кэш с временем жизни, фоновое обновление, дедупликация параллельных запросов одного ключа, отмена гонок, повторы, инвалидация после мутации, состояния загрузки и ошибки. Если положить серверные данные в Redux, всё это придётся написать руками - что обычно и происходит в легаси.

Поэтому современное разделение: react-query или SWR для серверного, лёгкий стор или контекст для клиентского.

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

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

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