Как правильно перестать получать обновления потоковой передачи от RTKQ?
Пытался вызвать функцию отписки:
unsubscribeFromThingIds(arg.tids);
после
await cacheEntryRemoved;
строка в этом примере .
Функция определяется так:
export const unsubscribeFromThingIds = (tids: string[]) => {
followedThingIds = followedThingIds.filter(
id => !tids.includes(id)
);
const argument = { tids: followedThingIds } as ITimersChannelInitParams;
myIo!.emit("configure timers channel", argument);
};
(куда
myIo
это клиент Socket.IO)
В настоящее время это не работает для меня. В настоящее время я отлаживаю эту проблему.
Я также пытался использовать
useEffect
ловушка с возвращенной функцией очистки для ее запуска при отключении компонента, примерно так:
useEffect(() => {
return () => {
unsubscribeFromThingIds(getTimersQueryParams.tids);
};
}, [getTimersQueryParams]);
Я хочу попросить эту информацию, потому что я не уверен, над какой из двух идей мне следует поработать больше, или есть еще что-то, что я могу сделать лучше.
1 ответ
Может быть, вы просто нетерпеливы? Запись в кеше будет удалена через 60 секунд (опция) после того, как последний компонент перестанет ее использовать.
Обычно: использование жизненного цикла конечной точки и ожидание
cacheEntryRemoved
- правильный способ сделать это, если вы запустили слушателя в
onCacheEntryAdded
. Если вы хотите, чтобы это произошло раньше, просто используйте более короткий
keepUnusedDataFor
продолжительность.