如何使用 useQuery 和 subscribeToMore 取消订阅

IT技术 reactjs apollo apollo-client
2021-05-05 05:00:22

另一篇文章分享了一个如何取消订阅的例子,而Apollo 文档没有。Apollo 文档确实提到了 subscribeToMore 返回的内容......

subscribeToMore:设置订阅的函数。subscribeToMore返回一个可用于取消订阅的函数。

这确实给出了提示。看一个例子会有所帮助。

问题

@apollo/react-hooks在 a 中使用,useEffect()并返回 的结果,这subscribeToMore是取消订阅组件卸载的方式吗?

const { data, error, loading, subscribeToMore } = useQuery(GET_DATA)

useEffect(() => {
    const unsubscribe = subscribeToMore(/*...*/)
    return () => unsubscribe();
}, [])
2个回答

当组件卸载时,任何关联的订阅都应该为您取消订阅。除非您想在此之前取消订阅,否则您不必手动管理它。

您可以看到在此处subscribeToMore调用时正在跟踪订阅,然后在此处清除查询时取消订阅

SubscribeToMore 返回取消订阅功能,因此您的代码是正确的。

https://github.com/apollographql/apollo-client/issues/5245