首页 > 解决方案 > 停止从 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);
};

myIoSocket.IO 客户端在哪里)

这目前对我不起作用。我目前正在调试这个问题。

我还尝试使用useEffect带有返回清理函数的钩子在组件卸载时运行它,如下所示:

useEffect(() => {
  return () => {
    unsubscribeFromThingIds(getTimersQueryParams.tids);
  };
}, [getTimersQueryParams]);

我想询问这些信息,因为我不确定我应该更多地研究这两个想法中的哪一个,或者我是否可以做另一件事更好。

标签: reactjssocket.ioreact-hooksredux-toolkitrtk-query

解决方案


难道只是你不耐烦吗?缓存条目将keepUnusedDataFor在最后一个组件停止使用后 60 秒(该选项)被删除。

通常:cacheEntryRemoved如果您在onCacheEntryAdded. 如果您希望它更早发生,只需使用更短的keepUnusedDataFor持续时间。


推荐阅读