Graphql | Аполлон клиент | Как изменить переменные в существующей подписке? - PullRequest
0 голосов
/ 06 мая 2019

Я настроил сервер и клиент Apollo с подписками. Все работает как положено в базовой настройке. Я использую метод подписки клиента Apollo для подписки. Примерно так:

graphqlClient.subscribe({ query, variables }).subscribe({
next: d => {
  onData(d);
},
error: error => {
  handleErrorResponse(error).catch(e => {
    Logger.notifyError(new Error(`Real-time update error | ${e.message}.`));
  });
}

});

Это работает, и я вижу, как мой обратный вызов onData запускает события.

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

Ожидание. Как только пользователь выберет какое-либо значение и применит фильтр, я хочу обновить свою подписку на сервере, чтобы начать использовать новые фильтры?

1 Ответ

0 голосов
/ 07 мая 2019

После создания вы не можете изменить подписку. Когда фильтр изменится, вам нужно будет вызвать unsubscribe для текущего Observer, а затем создать новый Observer, вызвав метод subscribe с обновленными переменными. Если вы посмотрите на исходный код , вот как компонент react-apollo Subscription обрабатывает его. Если вы уже используете React, я настоятельно рекомендую использовать доступный компонент, а не пытаться заново изобретать колесо.

...