我有一个无限滚动RTK查询应用程序,它可以进行端点查询并合并每个调用的数据,以便在向下滚动时将结果连接起来。但是,在对同一端点的特定调用中,我希望使该高速缓存无效并重新开始。以下是我的查询:
getArticles: builder.query({
query: (args) => {
let { page, filter } = args;
let filtersString = filter.join(',');
return {
url: '/apiPath?offset=${page*5}&limit=1000&categories=${filtersString}''
}
},
serializeQueryArgs: ({ endpointName }) => {
return endpointName;
},
merge: (currentCache, newItems) => {
currentCache.push(...newItems)
},
forceRefetch({ currentArg, previousArg }) {
return currentArg !== previousArg;
}
})
理想情况下,我希望使用相同的查询,因为我希望每当page
limit
或categories
更改时重新获取数据--但偶尔,我希望强制进行完全刷新。这可能吗?
1条答案
按热度按时间r3i60tvu1#
我也面对同样的问题。现在我通过删除所有的该高速缓存来解决这个问题。
dispatch(API.util.resetApiState())
我知道这是一个很好的方法,我们必须删除该高速缓存,只为这个端点。我也试过providedtag,但没有运气。如果有人解决了这个问题,请在这里发表评论。invalidateTags工作正常,它可以调用API,但由于缓存它的合并数据,因为我们正在使用合并