問題タブ [relayjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 異なるフラグメント フィールドを持つ同じ Relay ルート クエリを使用する複数の react-router-relay ルート
同じルート クエリを使用して 2 つの隣接する react-router-relay ルート コンポーネント内でデータを要求すると、2 番目のルート コンポーネントの graphql サーバー クエリが最初のルート コンポーネントから以前に取得したデータを無効にするという問題が発生しています。
例として:
ルート フィールドからデータの配列をクエリするために、フィールドを「ビューア」ルート ノードにアタッチする回避策を使用しています。
私の schema.js には、ビューアー (ユーザー) タイプとルートの次の定義が含まれています。
そしてルート:
ここで、main.jsx アプリケーション エントリ ポイントで、次のルートを定義しています。
以下を含む ViewerQueries.js を使用します。
ここで、App
コンポーネントに次のgraphqlフラグメントが含まれている場合:
また、AllCars
コンポーネントには次のものが含まれます。
何が起こるかというと、パス '/' で App コンポーネントをレンダリングすると、車の配列が問題なく返されます。ただし、「/cars」パスがレンダリングされると、「this.props.viewer.cars」の結果の配列は空になります。さらに、パス '/' に戻って App コンポーネントの再レンダリングを行うと、空の配列も返されるようになりました。
バックエンドでは、AllCars コンポーネントがPOST /graphql 200 277.369 ms - 94
サーバーへの追加トリップを引き起こしtype
、フラグメントで指定された新しいものを取得しているようです。AllCars コンポーネントに「name」フィールドのみが含まれている場合、Relay は正しく別のサーバー リクエストを作成しませんが、代わりに配列にデータを入力します (最初の App コンポーネント サーバー リクエストからキャッシュされたと思われます)。
いずれかのコンポーネントから車の配列を取得することは可能ではないでしょうか? Relay は、ルートに表示される順序に関係なく、フラグメントで指定された追加のデータ フィールドを取得できますか?
どんな助けでも大歓迎です!
graphql - Relay GraphQL 接続を使用する必要があるのはいつですか? また、プレーンなリストを使用する必要があるのはいつですか?
Relay GraphQL では、接続とリストはどちらも配列に似ていますが、機能が異なります。それぞれをいつ使用する必要がありますか?
graphql - GraphQL クエリ/ミューテーションのレスポンス
次の各ケースで、GraphQL クエリ/ミューテーションの応答がどのように見えるかについて質問があります。
- 結果があり、エラーはありません
- エラーが発生しました。1 つ以上のエラーが発生しました
- 結果といくつかのエラーの両方があります
後者が可能かどうかはわかりませんが、それが起こる可能性があることをどこかで読んだことを覚えているようです。たとえば、複数のミューテーションの場合、たとえば 2 つとしましょう。各ミューテーションは順番に処理されます。上記のケース #3 は、最初のミューテーションが問題なく、2 番目のミューテーションの実行中にエラーが発生した場合に発生する可能性があると思いますが、よくわかりません。
とにかく、応答はどのように見えるべきですか?以下のような?(それぞれが以前のケースに対応する JSON の例。) または、より慣用的な他の方法はありますか? おそらくリレーは、どのように見えるべきかについてのガイドラインを提供しますか? これに適したリソースが見つかりませんでした。
1:
2:
3:
ありがとう。
javascript - Relay.js ストアから React コンポーネントの外部でもデータを取得する
反応コンポーネントの外部にある Relay ストアのデータを使用したい場合があります。それで、あるストアにデータを取得する方法を考えています。
1 つのオプションは、コンポーネントがデータを取得したら、これらのデータをコンポーネントの「ストア」に配置することです。
しかし、要件を定義するreactコンポーネントに似たストアを作成できるようにしたいと思いますが、レンダリングせず、他のファイルから必要になる可能性があります。
反応コンポーネントを使用できると思っていましたが、コンポーネントをインスタンス化するには、それを dom にレンダリングする必要があり、この状況では意味がありません。
それをうまく達成する方法はありますか?
relayjs - ナビゲーションにつながるRelayJSの楽観的な更新
「ものを作成する」ボタンがある単純なアプリがあり、それをクリックすると、新しい URL に移動してそのものを編集するとします。ここで、編集インターフェイスを表示する前に、サーバーが ID を割り当てるのを待つ必要がないとしましょう。
あなたならどうしますか?ID が使用可能になるまで一時的に URL に「new」と書き込んでから、それを交換しますか? クライアント側で ID を割り当て、既存の ID と衝突しないことを望みますか? いずれにせよ、Relay が実際にはまだ存在しない情報を取得するのを停止する必要があります。どうやってそれをしますか?
reactjs - GraphQLなしでリレーを使用する方法はありますか?
React アプリケーションで Relay を試していますが、デフォルトで GraphQL を使用しています。次のようになります ( Score
React.js コンポーネントの一部です)。
問題は、カスタム API 関数を使用してデータをフラグメントに返すことができるかどうかです。このような:
graphql - Relay/GraphQL 接続でエッジが必要なのはなぜですか?
Relay/GraphQL スキーマ構成では、チュートリアルの例のように 1 対多の関係 (ページネーションあり) を指定します。
ただし、 による 1 対 1 の接続はShipEdge
冗長に思えます。カーソルを移動して、IDShipConnection
の配列をShip
エッジとして保存できないのはなぜですか?
edge
1 対多のリレーションシップごとに 1 つの追加オブジェクトを要求する設計上の決定はどのようなものでしたか?
relayjs - 反応リレーコンテナからコンポーネントを取得
コンポーネントを React Relay Container から取得して静的変数を取得するにはどうすればよいですか?
「./pages/home」からホームをインポートします。
console.log(Home.route) // 未定義
Home.Component.route // オブジェクトのようなものが必要です
reactjs - Relay.js でのルート クエリの作成と削除
親ノードを持たないリレーでノードを作成および削除する方法を見つけようとしています。NODE_DELETE
/ RANGE_DELETE
and RANGE_ADD
all には親ノードが必要なようです。Relay.js のルート クエリ オブジェクトからミューテーションの作成と削除を実行する方法はありますか?
注: FIELDS_CHANGE クエリを使用して作成を実行できる例を見つけましたが、ドキュメントや理由がありません。
reactjs - Passing arguments to top level fields from within a Relay container
Assume I have a field called country
defined at the top level of my GraphQL schema. I can query it in the following way:
In my relay container I can specify the attributes that I would like returned with a fragment on Country
:
How can I change the value of the alpha2
argument from within my react component? I could nest the country
field under some arbitrary field and declare my relay fragment on the parent but would rather avoid unnecessarily modifying my graph if possible.