В настоящее время у нас есть конечная точка API, которая запрашивает одну «Группу» через идентификатор.
У нас настроена подписка WebSocket, и в определении onCacheEntryAdded мы обрабатываем случаи, когда эта группа обновляется или удаляется.
Когда мы получаем сообщение об обновлении от веб-сокета, мы запускаем следующее:
updateCachedData((draft) => {
draft = response;
}
Который обновляет запись, как и ожидалось.
Однако какой подход следует использовать, если мы хотим полностью удалить запись? После «удаления» сообщений из веб-сокета я бы предположил, что могу просто установить черновик как неопределенный, но, похоже, это не так.

updateCachedData((draft) => {
draft = response;
}
на самом деле здесь ничего не обновляется.
updateQueryResults имеет те же правила, что и produce из immer или обычные редьюсеры createSlice case: вы можете изменить объект в state (или draft в данном случае), но вы не можете переназначить саму переменную. Если вы хотите сделать это, вы должны
updateCachedData((draft) => {
return response;
}
вместо.
Таким же образом вы можете
updateCachedData((draft) => {
return null;
}
тоже, но это не удалит полную запись кэша, а только установит data на null. (undefined не сработает!)
Запись в кеше будет удалена только после того, как ее больше не будет использовать компонент (если ее не использовать с useQuery), а затем она будет удалена автоматически через 60 секунд.
Это работает блестяще, возвращая ноль в этом случае совершенно нормально :) Спасибо, как всегда, за ответ и спасибо за блестящий пакет :)