Запретить запрос graphql в vue-apollo, если входная переменная равна нулю - PullRequest
0 голосов
/ 04 мая 2019

Я немного читал и придумал настройку запроса для поля ввода контакта. Я хотел бы избежать запуска этого запроса при запуске компонента с нулевым вводом. Я мог бы вручную выполнить запросы через вычисляемые методы, может быть, но есть ли простой способ предотвратить это?

apollo: {
    search: { 
        query: () => contactSearchGQL,
        variables() { 
            return { 
                searchText: this.searchText, 
            };
        },
        debounce: 300,
        update(data) { 
            console.log("received data: " + JSON.stringify(data));
        },
        result({ data, loading, networkStatus }) {
            console.log("We got some result!")
        },
        error(error) {
            console.error('We\'ve got an error!', error)
        },
        prefetch() { 
            console.log("contact search, in prefetch");
            if ( this.searchText == null ) return false;
            return true;
        },
    },
},

Я думаю, что я не понимаю что-то о предварительной загрузке, или если это вообще применимо здесь?

1 Ответ

1 голос
/ 04 мая 2019

Для этого следует использовать параметр skip, как показано в документах :

apollo: {
  search: { 
    query: () => contactSearchGQL,
    variables() { 
      return { 
        searchText: this.searchText, 
      };
    },
    skip() {
      return !this.searchText;
    },
    ...
  },
},

В любое время searchText обновления, skip будет переоценен - ​​если он оценивается как ложный, запрос будет выполнен. Вы также можете установить свойство пропуска напрямую, если вам нужно управлять этой логикой в ​​другом месте вашего компонента:

this.$apollo.queries.search.skip = true

Параметр prefetch относится только к SSR. По умолчанию vue-apollo выполняет предварительную выборку всех запросов в серверных отрисованных компонентах. Если для prefetch установлено значение false, эта функция будет отключена для конкретного запроса, что означает, что конкретный запрос не будет выполняться до тех пор, пока компонент не будет отображен на клиенте. Это не значит, что запрос пропущен. См. здесь для более подробной информации о SSR в vue-apollo.

...