問題タブ [react-router-relay]
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 - 在庫リレーからルーターを使用してリレーに移動するにはどうすればよいですか?
現在動作中の React/Relay アプリがあり、react-router-relay を使用してルーティングを追加したいと考えています。可能な限り最小限の変換を試みると、次のコードを参照してください。ログに理解できないエラーが表示されます。
この質問を表現する別の可能な方法は次のとおりです: プレーンなバニラ Relay の RelayRoutes.queries と react-router-relay のルートのクエリを指定する適切な方法の違いは何ですか?
react-router - Relayコンテナ間で変数を受け渡す方法
親コンテナーから子コンテナーに変数を渡すための適切な構文を探しています。
/
グローバルウィジェットリストがオンで、特定のウィジェットリストがオンのこれらのルートがあるとしましょう/widgets/:WidgetListID
。
注:react-router-relayを使用しています
これは同じコンポーネントで、内部<WidgetList/>
でレンダリングされます。変数を渡す方法は次のとおりです。<WidgetListContainer/>
<Layout/>
WidgetListID
Layout.js
WidgetListContainer.js
WidgetList.js
変数を WidgetList リレー コンテナー内に直接設定しても問題ありません。問題なくWidgetListID
動作しますが、WidgetListContainer リレー コンテナーから変数を渡そうとするとすぐに、空のデータ オブジェクトが作成されます{__dataID__: "VXNlcjo="}
。ただし、変数は getWidget() 関数で適切に出力されます。それで、ある時点で何かがうまくいかないのですが、何がわかりませんか?
WidgetListID
親コンテナーから子コンテナーに変数を渡すには、どの構文が適切でしょうか?
react-router - react-router-relay でルートクエリに値を渡す方法
react-router-relay プロジェクトを使用したリレーに次のルート クエリがあるとします。
の初期値は$number
非表示の入力のようにサーバーから取得され、サーバーへの最初のクエリでこの数値を使用したいと考えています。$number
現在の react-router-relay API を使用してクエリに渡すにはどうすればよいですか? これはqueryParam
またはではありませんstateParam
。
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 は、ルートに表示される順序に関係なく、フラグメントで指定された追加のデータ フィールドを取得できますか?
どんな助けでも大歓迎です!
react-router - react-router-relay と react-rails を使用したサーバー側のレンダリング
私のサーバー側は Rails で、サーバー側のレンダリング (prerender: true) で react-rails を使用しています。最近、react-router-relay でリレーを使用し始めましたが、サーバー側のレンダリングはできなくなりました。データのフェッチには、サーバーのレンダリング時には使用できないタイムアウトなどを含むグラフql サーバーとの通信が含まれているようです。したがって、graphqlの呼び出しを避けるために、サーバー側のリレーストアにデータを事前に注入する方法が必要だと思います. このライブラリを見つけました: https://github.com/denvned/isomorphic-relay-router、しかし、react-rails の使用と互換性がないため、使用できません (たとえば、どこにも app.get がありません)。私のアプリなので、そこに記載されている一致機能を使用する場所はありません)。これを機能させる方法について何か考えはありますか?
reactjs - React リレー + ルーターは、ネストされたルートのクエリを折りたたまない
私はreact-router-relayで次のことを読みました:
react-router-relay は、アクティブな React Router ルートからのすべてのクエリとパラメーターを組み合わせた Relay ルートを自動的に生成し、クエリ結果を各ルート コンポーネントに渡します。クエリはすべて 1 つのルートに集められるため、それらはすべて同時にフェッチされ、ページ全体のデータが読み込まれ、一度にレンダリングされます。
しかし、私のアプリでは、実際には への 2 つの別々の呼び出しが表示され/graphql
ます。これが私のコードです:
最初の呼び出しは のデータをフェッチしAppSkeleton
、2 番目の呼び出しは のデータをフェッチしますSites
。それらすべてを 1 つの呼び出しにまとめるべきではなかったのでしょうか? 私は何を間違っていますか?
reactjs - react-router-relay: ミューテーションで成功またはエラーを処理する
ミューテーション後の成功またはエラーを処理する最善の方法は何ですか?
私は React.js と react-router-relay を使用して、graphQL クエリとミューテーションを作成しています。
名前の変更ミューテーションを実行する React コンポーネントがあるとします。ミューテーションが完了した後、ユーザーにコールバックしてもらいたい
- 「オブジェクトの名前が正常に変更されました」または
- 「エラー: 名前は既に使用されています」または
- 「エラー: 名前は少なくとも 10 文字の長さでなければなりません」
- 等
どうすればそのようなコールバックを取得できますか? また、さまざまなエラー コードを処理する方法は?