vue apollo 订阅的生命周期是什么?

zca*_*ate 8 apollo vue.js vue-apollo

vue-apollo视图更改时是否自动取消订阅查询?

例如,我有两个视图路由到/users/orders/users已订阅该users表并/orders已订阅该orders表。

如果我在/user页面上,order订阅是否仍然有效?如果是,我将如何关闭它?

Sve*_*ort 4

由于 Apollo 查询绑定到您的组件,它们将遵循组件的生命周期,即,如果您的路线发生变化(渲染不同的组件),您的旧组件将被删除,因此您的旧查询也将被删除。

这是由 Vue apollo 中的mixin处理的。

看看以下部分:

export function installMixin (Vue, vueVersion) {
  Vue.mixin({
    // Other irrelevant code for this question
    destroyed: destroy,
  })
}
Run Code Online (Sandbox Code Playgroud)

这意味着它绑定到每个 Vue 组件的“destroyed”事件,然后触发 destroy 函数(如Vue API 参考所定义):

function destroy () {
  if (this.$_apollo) {
    this.$_apollo.destroy()
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,此过程可确保您的查询在您的组件被销毁时被销毁并且不再有效。

我希望这回答了你的问题