Выбор ответа Senior Состояние и данные обновлено
Устаревший список после мутации
Вопрос
После редактирования заказа экран деталей обновился через setQueryData(['order', id]), но в списке заказов старое название. Как правильно обновить?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Инвалидировать связанные ключи, например ['orders'], или обновить список в кеше. Кеш TanStack Query хранит запросы раздельно: деталь и список это разные записи.
Варианты ответа
- Инвалидировать связанные ключи, например
['orders'], или обновить список в кешеправильный ответ - Перезапускать приложение после каждой мутации, чтобы кеш собрался заново
- Увеличить
staleTimeу списка, тогда он реже будет показывать старые данные - Хранить список заказов в
useStateэкрана, а не в кеше запросов
Разбор
Кеш TanStack Query хранит запросы раздельно: деталь и список это разные записи. После мутации нужно обновить все, где встречается сущность: инвалидация по префиксу ключа перезапросит списки, а setQueryData для списка даст мгновенный отклик. Увеличение staleTime наоборот дольше покажет старые данные, локальный useState разрывает связь с кешем.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.