Выбор ответа Senior Состояние и данные обновлено

Устаревший список после мутации

Вопрос

После редактирования заказа экран деталей обновился через setQueryData(['order', id]), но в списке заказов старое название. Как правильно обновить?

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

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

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

Коротко

Правильный ответ: Инвалидировать связанные ключи, например ['orders'], или обновить список в кеше. Кеш TanStack Query хранит запросы раздельно: деталь и список это разные записи.

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

  1. Инвалидировать связанные ключи, например ['orders'], или обновить список в кешеправильный ответ
  2. Перезапускать приложение после каждой мутации, чтобы кеш собрался заново
  3. Увеличить staleTime у списка, тогда он реже будет показывать старые данные
  4. Хранить список заказов в useState экрана, а не в кеше запросов

Разбор

Кеш TanStack Query хранит запросы раздельно: деталь и список это разные записи. После мутации нужно обновить все, где встречается сущность: инвалидация по префиксу ключа перезапросит списки, а setQueryData для списка даст мгновенный отклик. Увеличение staleTime наоборот дольше покажет старые данные, локальный useState разрывает связь с кешем.

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

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