redux 如何仅在特定RTK查询调用时使缓存无效?

zqdjd7g9  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(113)

我有一个无限滚动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;
  }

})

理想情况下,我希望使用相同的查询,因为我希望每当pagelimitcategories更改时重新获取数据--但偶尔,我希望强制进行完全刷新。这可能吗?

r3i60tvu

r3i60tvu1#

我也面对同样的问题。现在我通过删除所有的该高速缓存来解决这个问题。
dispatch(API.util.resetApiState())
我知道这是一个很好的方法,我们必须删除该高速缓存,只为这个端点。我也试过providedtag,但没有运气。如果有人解决了这个问题,请在这里发表评论。invalidateTags工作正常,它可以调用API,但由于缓存它的合并数据,因为我们正在使用合并

相关问题