1

我已经设置了一个带有订阅的 Apollo 服务器和客户端。在基本设置中一切都按预期工作。我正在使用 Apollo Client 的订阅方法进行订阅。如下所示:

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 回调触发事件。

问题 - 在我们的应用程序中,订阅过滤器是动态的,用户可以选择会影响过滤器的不同值。我浏览了文档和许多(许多)文章,但找不到更新过滤器或如何处理此用例的方法?

期望 - 一旦用户选择任何值并应用过滤器,我想在服务器上更新我的订阅以开始使用新的过滤器吗?

4

1 回答 1

0

一旦创建,您将无法修改订阅。当过滤器更改时,您需要调用unsubscribe当前的Observer,然后Observer通过调用subscribe具有更新变量的方法来创建一个新的。如果您查看源代码,这就是组件处理它react-apollo的方式。Subscription如果您碰巧已经在使用 React,我强烈建议您使用可用的组件,而不是尝试重新发明轮子。

于 2019-05-06T21:29:04.817 回答