Выбор ответа Middle Context и стейт-менеджеры обновлено

staleTime по умолчанию в TanStack Query

Вопрос

В TanStack Query v5 два компонента подряд монтируются с одинаковым queryKey, staleTime не задан. Что происходит с данными?

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

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

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

Коротко

Правильный ответ: Второй берёт данные из кеша, но они устаревшие и обновятся в фоне. По умолчанию staleTime: 0: кеш отдаётся сразу, но помечен устаревшим, и библиотека обновляет его в фоне при новых монтированиях, фокусе окна, восстановлении сети.

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

  1. Второй компонент ждёт истечения 5 минут, прежде чем запросить снова
  2. Каждый компонент делает свой запрос и хранит свою копию данных
  3. Данные кешируются навсегда до перезагрузки страницы
  4. Второй берёт данные из кеша, но они устаревшие и обновятся в фонеправильный ответ

Разбор

По умолчанию staleTime: 0: кеш отдаётся сразу, но помечен устаревшим, и библиотека обновляет его в фоне при новых монтированиях, фокусе окна, восстановлении сети. Одновременные запросы с одним ключом дедуплицируются.

  • 5 минут это gcTime: сколько неиспользуемый кеш живёт в памяти, а не когда перезапрашивать.
  • Отдельных копий на компонент нет: кеш общий по ключу.
  • «Навсегда» будет только с staleTime: Infinity.

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

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

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