Проверяет понимание механизма кэширования в RTK Query, что важно для оптимизации сетевых запросов и синхронизации состояния в Redux-приложениях.
RTK Query — это инструмент для работы с серверным состоянием, встроенный в Redux Toolkit. Его кэш устроен как нормализованное хранилище, где каждая запись идентифицируется парой: имя эндпоинта и сериализованный аргумент запроса. Это позволяет автоматически переиспользовать данные между компонентами без повторных сетевых вызовов.
Когда вы вызываете хук, например useGetUserQuery(1), RTK Query строит ключ вида getUser(1). Если другой компонент запросит того же пользователя, он получит данные из кэша мгновенно, а сетевой запрос не будет отправлен повторно.
pending, затем fulfilled или rejected.keepUnusedDataFor (по умолчанию 60 секунд), после чего запись удаляется.Для синхронизации данных после мутаций используются теги. Эндпоинт-запрос помечает себя тегами, а мутация указывает, какие теги она инвалидирует. Это заставляет RTK Query перезапросить связанные данные.
const api = createApi({
reducerPath: 'api',
baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
tagTypes: ['User'],
endpoints: (builder) => ({
getUser: builder.query({
query: (id) => `users/${id}`,
providesTags: (result, error, id) => [{ type: 'User', id }],
}),
updateUser: builder.mutation({
query: ({ id, ...patch }) => ({
url: `users/${id}`,
method: 'PATCH',
body: patch,
}),
invalidatesTags: (result, error, { id }) => [{ type: 'User', id }],
}),
}),
});Можно вручную обновлять кэш через updateQueryData или сбрасывать через resetApiState. Это полезно для оптимистичных обновлений и сложных сценариев синхронизации.
Итог: кэширование в RTK Query избавляет от ручного управления состоянием загрузки и ошибок, автоматически переиспользует данные и синхронизирует их через теги. Применяйте RTK Query, когда в приложении много серверных данных и важна производительность и консистентность.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию