Компонент Query подписки ToMore prop от Apollo Client для React неправильно отписался - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть react-apollo@3.1.3 реализация внутри приложения React, где я подписываюсь на события внутри компонентов Apollo Query с помощью обратного вызова subscribeToMore

<Query query={...} variables={...}>
  {( { loading, error, data, subscribeToMore } ) => {
    if ( !this.unsubscribe ) 
      this.unsubscribe = subscribeToMore({
       document: ..., 
       updateQuery: ...
      })
  }}
</Query>

Я уже console.log( this.unsubscribe ) функция возврата subscribeToMore:

if ( _this.subscriptions.delete( subscription ) ) { subscription.unsubscribe(); }

, что имеет смысл; технически, позволяя мне просто сделать:

componentWillUnmount () => { this.unsubscribe(); }

Тем не менее, я монтирую и размонтирую компонент несколько раз, пока мой сервер не выдаст:

(node:14070) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 31 
TURN_UPDATE listeners added.

Use emitter.setMaxListeners() to increase limit
Killed

И мой перерывы в работе сервера!

Это позволяет сделать вывод, что я, вероятно, неправильно выполняю процесс отмены подписки, и я был бы очень признателен за некоторые обходные пути или правильную реализацию подписки.

Я уже посмотрел документы Apollo, но они просто не погружаются в подписки достаточно глубоко.

...