#typescript #apollo #apollo-client
Вопрос:
У меня есть страница со списком продуктов, которые я запрашиваю с помощью slug. И для них есть отзывы. Что касается разбиения на страницы, мне пришлось реализовать типополиции, которые выглядят примерно так.
cache: new InMemoryCache({
typePolicies: {
Query: {
fields: {
getReviewsBySlug: {
keyArgs: false,
merge(existing = null, incoming) {
if (!existing) return incoming;
const reviews = [...existing.reviews, ...incoming.reviews];
const uniqueReviews = uniqBy(reviews, (item) => item['__ref']);
return {
...existing,
reviews: uniqueReviews,
hasMore: incoming.hasMore
}
},
}
}
}
}
})
И я выполняю запрос следующим образом.
const { data: dataComments, fetchMore } = useGetReviewsBySlugQuery({
variables: {
input: {
slug,
skip,
take: TAKE,
}
},
});
Итак, проблема, с которой я столкнулся. После того, как я открою один продукт и увижу 5 отзывов, затем я открою другой продукт с 3 отзывами, для следующего у меня будет 8 отзывов.
Он объединил их, не завися от слизняка, который я использую для запроса . Как я могу обратиться к кэшу, чтобы переменная slug разделяла его