停止从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。输入输出端)

这是不工作目前为我。我正在调试这个问题。

我还尝试使用一个useEffect挂钩与返回的清理函数运行时,组件卸载,像这样的东西:

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

我想询问这些信息,因为我不确定我应该在这两个想法中哪一个做得更多,或者是否有其他我可以做得更好的事情。

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

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

相关内容

最新更新