RTK 查询 - 在 cacheEntryAdded 时删除缓存数据

RTK Query - Delete cached data upon cacheEntryAdded

目前我们有一个 api 端点,它通过 ID 请求一个 'Group'。

我们设置了 WebSocket 订阅,在 onCacheEntryAdded 定义中,我们处理更新或删除该组的情况。

当我们收到来自 websocket 的更新消息时,我们触发以下事件;

updateCachedData((draft) => {
  draft = response;
}

这会按预期更新条目。

但是,如果我们想完全删除该条目,我们应该使用什么方法呢?根据来自 websocket 的 'delete' 消息,我假设我可以简单地将草稿设置为未定义,但情况似乎并非如此。

updateCachedData((draft) => {
  draft = response;
}

实际上一开始并没有在这里更新任何东西。

updateQueryResultsimmer 中的 produce 或普通 createSlice 大小写缩减器具有相同的规则:您可以修改 state 中的对象(或 draft 在这种情况下),但您不能重新分配变量本身。如果你想这样做,你必须

updateCachedData((draft) => {
  return response;
}

相反。

以同样的方式,您可以

updateCachedData((draft) => {
  return null;
}

也是,但这不会删除完整的缓存条目,它只会将 data 设置为 null。 (undefined 不行!)

缓存条目只有在没有更多组件使用它时才会被删除(不与 useQuery 一起使用)- 然后它将在 60 秒后自动删除。