【问题标题】:What is the correct way to stop receiving streaming updates from an RTKQ?停止从 RTKQ 接收流式更新的正确方法是什么?
【发布时间】:2021-08-09 03:55:05
【问题描述】:

我尝试调用取消订阅函数:

unsubscribeFromThingIds(arg.tids);

this example 中的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]);

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

【问题讨论】:

    标签: reactjs socket.io react-hooks redux-toolkit rtk-query


    【解决方案1】:

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

    通常:如果您在onCacheEntryAdded 中启动了侦听器,则使用端点生命周期并等待cacheEntryRemoved 是正确的方法。如果您希望它早点发生,只需使用较短的keepUnusedDataFor 持续时间即可。

    【讨论】:

    • 我解决了你所说的问题,将keepUnusedDataFor 设置为0,因为它是关于不应该被缓存的高度动态数据。谢谢!
    猜你喜欢
    • 2016-02-27
    • 2021-04-18
    • 2018-07-29
    • 2019-07-29
    • 2018-02-04
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多