2017-07-25 42 views
0

我使用react-apollo作为客户端与我创建的GraphQL服务器进行通信。我成功地获得了使用​​函数的订阅,详见Apollo documentation,当我在两个窗口中运行我的web应用程序时,会显示最新的数据。我想要做的是让另一个客户端更改我目前正在查看的数据时通知警报的显示,以便我可以判断出情况发生了变化,以防我不注意?这样做的正确方法是什么?如何使界面响应订阅在阿波罗

  • update方法?
  • updateQueries方法?

dataFromObjectIdrefetchQueries字段似乎与我正在尝试做的事情不相关。由于我使用的是redux,有没有一种方法可以直接从我的订阅派发动作?将通知提醒是我必须使用client.subscribe()

回答

0

假设您使用的是最新版本的Apollo,您应该将组件命名为“updateQuery”,其中包含处理数据的逻辑。

http://dev.apollodata.com/react/subscriptions.html#subscribe-to-more

本节将介绍你需要做什么,但基本上是你的“updateQuery”功能应该做到以下几点:在结构argumentName.data的一个对象,它包含了新的信息

  1. 走。
  2. 通过创建新对象将新对象添加到结果中。
  3. 返回新的结果对象。

所以它可能是这个样子:

(prev, { subscriptionData }) => { 
    if (!subscription.data) { 
    //If no new data, return old results 
    return prev; 
    } 
    var newResults = Object.assign(
    {}, 
    prev, 
    queryName: { [subscriptionData.data, ...prev[queryName]] } 
); 
return newResults; 
+0

没有其他办法,我能得到它的下1.x的工作 – mikeyGlitz