2017-07-25 46 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