Каков жизненный цикл подписок vue apollo? - PullRequest
8 голосов
/ 17 февраля 2020

Отменяет ли vue-apollo автоматическую отмену подписки на запрос при изменении вида?

Например, у меня есть два представления, перенаправленные на /users и /orders. /users имеет подписку на таблицу users, а /orders имеет подписку на таблицу orders.

Если бы я был на странице /user, подписка order была бы по-прежнему в результате? Если да, как я смогу отключить его?

1 Ответ

2 голосов
/ 25 февраля 2020

Поскольку запросы Apollo привязаны к вашему компоненту, они будут следовать жизненному циклу ваших компонентов, т. Е. Если ваш маршрут изменится (будут отображаться разные компоненты), ваши старые компоненты будут удалены, и поэтому ваши старые запросы также будут удалены.

Об этом позаботится Vue apollo этот миксин .

Посмотрите на следующую часть:

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

Это означает, что это привязывается к событию 'destroy' каждого компонента Vue, который затем запускает функцию уничтожения (как определено в Vue API-ссылке ):

function destroy () {
  if (this.$_apollo) {
    this.$_apollo.destroy()
  }
}

Итак, этот процесс гарантирует, что ваши запросы будут уничтожены и больше не будут действовать, когда ваш компонент уничтожен.

Я надеюсь, что это ответ на ваш вопрос

...