如何使用 useQuery 和 subscribeToMore 取消订阅

Cha*_*ith 8 apollo reactjs apollo-client

另一篇文章分享了一个如何取消订阅的例子,而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();
}, [])
Run Code Online (Sandbox Code Playgroud)

Dan*_*den 5

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

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

  • 那么,我可以放弃这个吗?`返回() => 取消订阅();` (7认同)