2017-06-03 4 views
1

このタイトルはかなり混乱しますが、私はできる限りベストを説明しようとします。私は、React Nativeのサーバーからデータ要素のリストを収集して表示している状況があります。 GraphQLパラメータをサーバーに送信するクエリを使用して、最初の要求を最初の15要素に制限します。Apollo Client React container再作成せずに要素のページ番号を付けたリストに作成された要素を追加します

query GetElements ($count: Int) { 
    elements (count: $count) { 
      id 
      name 
      tye 
    } 
} 

前述のように、これは15個の要素の初期カウントでメインリストを照会します。

別のGraphQLクエリを使用して、バックエンドに新しい要素を作成できるアプリの別のページがあります。

私の質問は:追加のネットワークリクエストを実行せずに、新しく作成された要素を含むように要素のメインリストを簡単に更新する方法はありますか?言い換えると、createコマンドが成功するたびに、新しい要素を要素のメインリストに単純に追加できるようにしたいのです。

問題は、アップデートプロキシでApolloのreadQueryコマンドを実行すると、最初のクエリで送信された変数がわからない限り、適切なデータセットが返されません。これには、ページ番号count変数が含まれます。

+0

をこれは 'updateQueries'オプションを使ってうまくいくことを知っていますが、私はApolloチームが人々を今から離れさせようとしていることを知っています。 –

答えて

0

あなたは今、このようなクエリキャッシュストアのためのキーを定義することができます:私は

query AllItems($cursor: String, $limit: Int, $query: String) { 
    items(cursor: $cursor, limit: $limit, query: $query) @connection(key: "AllItemsQuery") { 
    count 
    cursor 
    has_next 
    has_prior 
    data{ 
     ...CoreItem 
    } 
    } 
} 
+0

私はこれを調べなければならないでしょう。これは状況を処理する良い方法かもしれません。同じ接続キーが含まれている限り、既存のクエリを更新できますか? –

+0

@Guardian_nwアイテムが削除された場合、AllItemsQueryを更新する方法 – johndavedecano

+0

guardian_nw、yes、およびキーを追加するためのフィルタを使用して、カーソルなどを省略することができます。 @johndavedecano、新しいobjを挿入するには、単にストア配列をスライスします。 http://dev.apollodata.com/react/api-mutations.html#graphql-mutation-options-update – Manzo

0

サブスクリプションをしたいようにあなたが追加したアイテムを受け取りたい場合は、それはそう:: http://dev.apollodata.com/react/subscriptions.html

+0

ありがとうKurt、しかし私はそれが私が探しているとは思わない:私は追加のネットワークトラフィックなしでそのリストを更新できるようにしたい。 –

関連する問題