Reactjs 如何使用户界面响应Apollo中的订阅

Reactjs 如何使用户界面响应Apollo中的订阅,reactjs,graphql,subscriptions,apollo,react-apollo,Reactjs,Graphql,Subscriptions,Apollo,React Apollo,我使用react apollo作为客户端与我创建的GraphQL服务器进行通信。我成功地获得了使用data.subscribeToMore()函数的订阅,如中所述,当我在两个窗口内运行web应用程序时,会显示最新数据。我想做的是,当另一个客户端更改我当前查看的数据时,会显示一个通知警报,这样我就可以在我不注意的情况下知道发生了什么变化?正确的做法是什么 更新方法 updateQueries方法 dataFromObjectId和refetchQueries字段似乎与我尝试执行的操作无关。因为

我使用
react apollo
作为客户端与我创建的GraphQL服务器进行通信。我成功地获得了使用
data.subscribeToMore()
函数的订阅,如中所述,当我在两个窗口内运行web应用程序时,会显示最新数据。我想做的是,当另一个客户端更改我当前查看的数据时,会显示一个通知警报,这样我就可以在我不注意的情况下知道发生了什么变化?正确的做法是什么

  • 更新
    方法
  • updateQueries
    方法

dataFromObjectId
refetchQueries
字段似乎与我尝试执行的操作无关。因为我使用的是redux,有没有一种方法可以直接从订阅中发送操作?通知警报是我必须使用的
client.subscribe()
吗?

假设您使用的是最新版本的Apollo,您应该为组件提供一个名为“updateQuery”的道具,该道具包含处理数据的逻辑

本节介绍了您需要执行的操作,但实际上“updateQuery”函数应该执行以下操作:

  • 接受包含新信息的结构对象
    argumentName.data
  • 通过创建新对象将新对象添加到结果中
  • 返回新的结果对象
  • 所以它可能看起来像这样:

    (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; 
    

    我没有其他方法可以让它在1.x下工作