Керування станом · Senior · Запитання 51 з 75
Як записувати оновлення з WebSocket у запис кешу RTK Query?
async onCacheEntryAdded(arg, { updateCachedData, cacheDataLoaded, cacheEntryRemoved }) {
await cacheDataLoaded;
const ws = new WebSocket(url);
ws.onmessage = (e) => updateCachedData((draft) => { draft.push(JSON.parse(e.data)); });
await cacheEntryRemoved;
ws.close();
}- ✓Правильна відповідь: Використати життєвий цикл ендпоінта
onCacheEntryAddedзupdateCachedDataі закривати сокет під час видалення запису - 2Надсилати звичайну дію слайса з
ws.onmessageі копіювати дані вручну - 3Опитувати ендпоінт кожні 100 мс
Пояснення
Сокет живе рівно стільки, скільки на запис кешу підписаний хоч один компонент, а оновлення йдуть через чернетки Immer, як і інші оновлення кешу.