Выбор ответа Junior Состояние и данные спрашивают часто обновлено

TanStack Query: ключ запроса

Вопрос

Экран заказов фильтруется по статусу. Почему ключ должен быть ['orders', status], а не просто ['orders']?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Ключ задаёт запись кеша: у каждого статуса свой кеш и своя загрузка. TanStack Query кеширует по ключу.

Варианты ответа

  1. Ключ должен содержать вообще все переменные компонента, иначе кеш не работает
  2. Без status в ключе запрос просто не скомпилируется из-за типов
  3. Ключ влияет только на логирование в DevTools, на загрузку данных он не влияет
  4. Ключ задаёт запись кеша: у каждого статуса свой кеш и своя загрузкаправильный ответ

Разбор

TanStack Query кеширует по ключу. Если ключ не зависит от фильтра, смена фильтра не вызовет новый запрос, и на экране останутся данные другого статуса. В ключ кладут всё, от чего зависит результат функции запроса, но не лишнее (например, не функции и не случайные значения). Компиляции это не касается.

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

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