如何使用useQuery和subscribeToMore退订

时间:2020-03-03 21:02:53

标签: reactjs apollo apollo-client

Another post分享了一个有关如何退订的示例,而Apollo docs却没有。 Apollo文档确实提到了SubscribeToMore返回的内容...

subscribeToMore:设置订阅的功能。 subscribeToMore返回一个可用于退订的函数。

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

问题

@apollo/react-hooks内使用useEffect()并返回subscribeToMore的结果,这是退订组件卸载的方法吗?

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

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

2 个答案:

答案 0 :(得分:5)

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

subscribeToMore被调用为here时,您可以看到正在跟踪预订,而在清理查询here时,则取消了预订。

答案 1 :(得分:1)

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

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