Как правильно перестать получать обновления потоковой передачи от 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 продолжительность.

Другие вопросы по тегам