6️⃣Кеширование
⚡1) Intro
Ранее мы уже настроили пагинацию. Теперь давайте будем переходить по страницам и делать запрос за новыми карточками.
// Параметры в пагинации будут следующие.
// На одной странице, мы будем показывать 2 карточки.
&page=1 2 3 4 5 .... (будем менять по клику)
&pageCount=2 (захардкодим)export const cardsApi = createApi({
reducerPath: "cardsApi",
baseQuery: fetchBaseQuery({ baseUrl: baseURL, credentials: "include" }),
tagTypes: ["Card"],
endpoints: (build) => {
return {
getCards: build.query<FetchCardsResponseType, ArgGetCardsType>({
query: ({ packId, page, pageCount }) => {
return {
method: "GET",
url: "cards/card",
params: {
cardsPack_id: packId,
page,
pageCount,
},
};
},
providesTags: ["Card"],
}),
// ...
};
},
});
export const { useGetCardsQuery, useAddCardMutation } = cardsApi;
Откройте network и теперь внимательно посмотрим на запросы. Перейдите на 1, 2, 5 страницы и потом вернитесь на 1 страницу

⚡2) keepUnusedDataFor - время хранения кеша
keepUnusedDataFor - время хранения кешаВремя кеша по умолчанию 60 секунд, но это время очень легко и гибко можно контролировать. Если мы хотим например уменьшить время кеша для все что нужно сделать
также
keepUnusedDataFor можно задаватьдля конкретного эндпоинта
Откройте network, перейдите в соседнюю вкладку и посмотрите запрос. Если 2 экрана, кликните по второму экрану и опять вернитесь в приложени. В общем как только вы теряете фокус и возвращаетесь к приложению идет запрос
⚡6) pooling interval
⚡7) retry
Допустите ошибку packId и проверьте как отрабатывает код
Last updated