Ответ вслух Senior Состояние и данные обновлено

Пагинация и консистентность данных

Вопрос

Как обеспечить, чтобы после изменения объекта на одном экране он был актуален в списке, деталях и счётчиках на других экранах?

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Образцовый ответ: «Главное, чтобы у сущности был один источник правды. С TanStack Query после мутации я точечно обновляю кеш деталей через setQueryData, чтобы экран отреагировал сразу, и инвалидирую связанные ключи: списки по префиксу ['orders'] и счётчики.

Что должно прозвучать в ответе

  • Один источник правды: кеш запросов или нормализованный стор

  • Инвалидация связанных ключей после мутации (`invalidateQueries` по префиксу)

  • Точечное обновление кеша `setQueryData` для мгновенного отклика

  • Нормализация (`createEntityAdapter`, RTK Query теги) для общих сущностей

  • Серверные события (WebSocket, push) для изменений с других устройств

  • Сверка с сервером после оптимистичных изменений

Что могут спросить следом

  • Как обновить элемент внутри бесконечного списка?
  • Что делать, если изменение пришло по WebSocket?

Разбор

Образцовый ответ: «Главное, чтобы у сущности был один источник правды. С TanStack Query после мутации я точечно обновляю кеш деталей через setQueryData, чтобы экран отреагировал сразу, и инвалидирую связанные ключи: списки по префиксу ['orders'] и счётчики. Для бесконечного списка обновляю элемент внутри страниц data.pages, а не перезагружаю всю ленту. Если одна сущность встречается во многих местах, удобнее нормализованный стор: в RTK Query это теги providesTags и invalidatesTags. Изменения с других устройств приходят через WebSocket или push, и я обрабатываю их так же: обновляю или инвалидирую кеш. После оптимистичных изменений всегда сверяюсь с сервером»

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

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