【问题标题】:how to unsubscribe with useQuery and subscribeToMore如何使用 useQuery 和 subscribeToMore 取消订阅
【发布时间】:2020-06-16 07:41:09
【问题描述】:

Another post 分享了一个如何取消订阅的示例,而 Apollo docs 没有。 Apollo 文档确实提到了 subscribeToMore 返回的内容...

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

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

问题

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

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

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

【问题讨论】:

    标签: reactjs apollo apollo-client


    【解决方案1】:

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

    subscribeToMore 被称为here 时,您可以看到正在跟踪订阅,然后在清理查询here 时取消订阅。

    【讨论】:

    • 那么,我可以放弃这个吗? return () => unsubscribe();
    【解决方案2】:

    SubscribeToMore 返回取消订阅函数,所以你的代码是正确的。

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

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2022-01-19
      • 2012-03-14
      • 2019-07-12
      • 2022-09-29
      • 1970-01-01
      相关资源
      最近更新 更多