我尝试调用退订函数:
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
持续时间。