Серверное состояние
Вопрос
Чем серверное состояние отличается от клиентского и зачем react-query?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
серверные данные - чужие, они устаревают без нашего участия
нужен кэш, признак устаревания, фоновая перезагрузка
нужна дедупликация одинаковых запросов и отмена гонок
нужны состояния загрузки, ошибки и повтора
класть это в Redux - писать половину react-query руками
клиентское состояние - модалки, фильтры, форма - остаётся локальным
Что могут спросить следом
- Что такое stale-while-revalidate
- Как инвалидировать кэш после мутации
- Когда Redux всё-таки оправдан
Разбор
Клиентское состояние принадлежит нам: открыта ли модалка, что в форме. Серверное - копия чужих данных, которая устаревает сама по себе, без нашего действия.
Из этого вытекает всё, что нужно: кэш с временем жизни, фоновое обновление, дедупликация параллельных запросов одного ключа, отмена гонок, повторы, инвалидация после мутации, состояния загрузки и ошибки. Если положить серверные данные в Redux, всё это придётся написать руками - что обычно и происходит в легаси.
Поэтому современное разделение: react-query или SWR для серверного, лёгкий стор или контекст для клиентского.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.