問題タブ [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.

0 投票する
2 に答える
2120 参照

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 は、ルートに表示される順序に関係なく、フラグメントで指定された追加のデータ フィールドを取得できますか?

どんな助けでも大歓迎です!

0 投票する
1 に答える
4722 参照

graphql - Relay GraphQL 接続を使用する必要があるのはいつですか? また、プレーンなリストを使用する必要があるのはいつですか?

Relay GraphQL では、接続とリストはどちらも配列に似ていますが、機能が異なります。それぞれをいつ使用する必要がありますか?

0 投票する
1 に答える
816 参照

graphql - GraphQL クエリ/ミューテーションのレスポンス

次の各ケースで、GraphQL クエリ/ミューテーションの応答がどのように見えるかについて質問があります。

  1. 結果があり、エラーはありません
  2. エラーが発生しました。1 つ以上のエラーが発生しました
  3. 結果といくつかのエラーの両方があります

後者が可能かどうかはわかりませんが、それが起こる可能性があることをどこかで読んだことを覚えているようです。たとえば、複数のミューテーションの場合、たとえば 2 つとしましょう。各ミューテーションは順番に処理されます。上記のケース #3 は、最初のミューテーションが問題なく、2 番目のミューテーションの実行中にエラーが発生した場合に発生する可能性があると思いますが、よくわかりません。

とにかく、応答はどのように見えるべきですか?以下のような?(それぞれが以前のケースに対応する JSON の例。) または、より慣用的な他の方法はありますか? おそらくリレーは、どのように見えるべきかについてのガイドラインを提供しますか? これに適したリソースが見つかりませんでした。

1:

2:

3:

ありがとう。

0 投票する
2 に答える
658 参照

javascript - Relay.js ストアから React コンポーネントの外部でもデータを取得する

反応コンポーネントの外部にある Relay ストアのデータを使用したい場合があります。それで、あるストアにデータを取得する方法を考えています。

1 つのオプションは、コンポーネントがデータを取得したら、これらのデータをコンポーネントの「ストア」に配置することです。

しかし、要件を定義するreactコンポーネントに似たストアを作成できるようにしたいと思いますが、レンダリングせず、他のファイルから必要になる可能性があります。

反応コンポーネントを使用できると思っていましたが、コンポーネントをインスタンス化するには、それを dom にレンダリングする必要があり、この状況では意味がありません。

それをうまく達成する方法はありますか?

0 投票する
2 に答える
50 参照

relayjs - ナビゲーションにつながるRelayJSの楽観的な更新

「ものを作成する」ボタンがある単純なアプリがあり、それをクリックすると、新しい URL に移動してそのものを編集するとします。ここで、編集インターフェイスを表示する前に、サーバーが ID を割り当てるのを待つ必要がないとしましょう。

あなたならどうしますか?ID が使用可能になるまで一時的に URL に「new」と書き込んでから、それを交換しますか? クライアント側で ID を割り当て、既存の ID と衝突しないことを望みますか? いずれにせよ、Relay が実際にはまだ存在しない情報を取得するのを停止する必要があります。どうやってそれをしますか?

0 投票する
1 に答える
1708 参照

reactjs - GraphQLなしでリレーを使用する方法はありますか?

React アプリケーションで Relay を試していますが、デフォルトで GraphQL を使用しています。次のようになります ( ScoreReact.js コンポーネントの一部です)。

問題は、カスタム API 関数を使用してデータをフラグメントに返すことができるかどうかです。このような:

0 投票する
3 に答える
5572 参照

graphql - Relay/GraphQL 接続でエッジが必要なのはなぜですか?

Relay/GraphQL スキーマ構成では、チュートリアルの例のように 1 対多の関係 (ページネーションあり) を指定します。

ただし、 による 1 対 1 の接続はShipEdge冗長に思えます。カーソルを移動して、IDShipConnectionの配列をShipエッジとして保存できないのはなぜですか?

edge1 対多のリレーションシップごとに 1 つの追加オブジェクトを要求する設計上の決定はどのようなものでしたか?

0 投票する
1 に答える
493 参照

relayjs - 反応リレーコンテナからコンポーネントを取得

コンポーネントを React Relay Container から取得して静的変数を取得するにはどうすればよいですか?

「./pages/home」からホームをインポートします。

console.log(Home.route) // 未定義

Home.Component.route // オブジェクトのようなものが必要です

0 投票する
2 に答える
992 参照

reactjs - Relay.js でのルート クエリの作成と削除

親ノードを持たないリレーでノードを作成および削除する方法を見つけようとしています。NODE_DELETE/ RANGE_DELETEand RANGE_ADDall には親ノードが必要なようです。Relay.js のルート クエリ オブジェクトからミューテーションの作成と削除を実行する方法はありますか?

注: FIELDS_CHANGE クエリを使用して作成を実行できる例を見つけましたが、ドキュメントや理由がありません。

0 投票する
1 に答える
1510 参照

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.