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

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

graphql - リレーで認証する方法

ユーザーを認証する正しいポイントは何ですか?

例としてリレースターターキットを使用します。

これはクエリのポイントのように思われます (引数 id を追加しました)

次に、データベースで次のようなことを行います

今、それがバラバラになっているこのポイントです.IDの作成を要求する場所はどこですか? 私はルートを想定します

これは機能していません。

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

react-router - React Router Relay を使用した GraphQL: 予想される型 Int、数値ルートの文字列が見つかりました

react-router-relayパッケージを使用して、次のルーターとルートを持っています

GraphQL からの私の StoreType は次のようになります。user フィールドは、null 以外の整数を表す id 引数を受け入れます。

user/:userIdルートのリレー コンテナ:

ブラウザーで /user/1 にアクセスすると、react-router-relay は:userId整数ではなくルートからの文字列として扱い、GraphQL は JSON エンコードされたエラー メッセージを返します。"Argument \"id\" has invalid value \"1\".\nExpected type \"Int\", found \"1\"."

URL で渡された userId 引数を整数にキャストする方法はありますか? または、整形式の数値文字列と整数をサポートするカスタム GraphQL スカラー型はありますか? これに関するご意見やご指示をいただければ幸いです。

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

graphql - Relay/GraphQL 接続にカスタム フィールドを追加

ページネーションに使用するレコードの総数を追加しようとしています。今、接続を確認できますが、totalCount を切り離すために接続を変更するのに問題があります。

この場合、BookConnection で接続オブジェクトを取得すると。その値をフィールドに割り当てられるようにしたい。

変数totalCountのプロパティを作成するにはどうすればよいですか?connection

ここで答えの一部を見つけました: pageInfo で合計カウントをクライアントに渡す方法

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

connection - リレーのGraphQL接続にカーソルがある制限は何ですか?

Graphql-composeで構築されたgraphqlタイプの接続タイプを構築できるNodeJS https://github.com/nodkz/graphql-compose-connectionのパッケージをほぼ完成させました。

このパッケージは、Relay Cursor Connections Specification ( https://facebook.github.io/relay/graphql/connections.htmfilter ) に完全に準拠しており、arg (レコードのフィルタリング用) およびsortarg (一意のインデックスによるレコードの並べ替え用) が大幅に追加されています。

したがって、カーソルの一意性について次の質問があります。

1) カーソルは異なるタイプ間で一意であるべきですか?

2) 異なる引数を持つ 1 つの接続間でカーソルを一意にする必要がありますか?

例えば。UserConnection には、フィルター引数があります。そして、最初のリストにすべてのユーザーを表示し、2番目のリストにオンラインユーザーを表示したい(ページ上で同時に2つのリスト)。同じカーソルを持つユーザーが両方のリストに存在する可能性があります。

3) Relay が 1 つの接続で同様のカーソルを取得した場合、エラーがスローされますか?

4) カーソルを base64 でエンコードする必要がありますか、それとも文字列化された json オブジェクトが含まれている可能性がありますか?

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

reactjs - Redux と Relay を同期する方法は?

状況

ユーザーが段階的なオンボーディングを行うオンボーディング シナリオがあります。Redux を使用して、ユーザーの進行状況のクライアント側の状態を管理したいと考えています。サーバーとクライアント間の同期はすでに Relay に実装されていますが、クライアント側の状態管理には Redux ストアが必要です。そのため、Relay-/Redux-Store の同期で問題が発生します。

私が今行っていることは、React コンポーネントを Redux でラップしてから Relay でラップすることです。

私の進歩

次のように、さまざまな操作を実行する方法を見つけました。

サーバーデータを使用した Redux ストアの初期化

非同期の生リレー クエリを使用してストアを作成した直後に、Redux の状態を初期化しています。それを可能にするために、redux-thunkミドルウェアも使用しています。Redux は、サーバーに問い合わせる Relay へのリクエストを開始します。視覚的表現 (矢印はデータ フローを示し、要素の順序は「呼び出し順序」を反映しています):Redux <= Relay <= Server

Redux アクションのディスパッチ時にサーバー上のデータを更新する

Redux => Relay => Server

状態の変化に一貫性を持たせるために、ユーザーがオンボーディング プロセスを進めるときに Redux アクションを起動します。このアクションは、Relay ミューテーションも非同期で実行します。私もredux-thunkこの目的で使用しています。

未解決の問題

私はまだ次の状況へのアプローチを見つけていません:

Relay Store の更新時に Redux Store を更新する

サーバー上のデータへの変更には、アプリ内のユーザー アクションによってトリガーされない外部ソースが含まれる場合があります。Relay を使用すると、これを forceFetching またはポーリングで解決できます。リレー クエリは次のようになりますRelay <= Server。このデータ フローを追加したいと思います:Relay => Redux外部データが変更されたとき。

Redux ストアを新しいデータで更新する必要があるもう 1 つの理由は、Relay ストアに深くネストされているデータ、または複雑なクエリの一部を同期する場合です。

たとえば、ブログ投稿へのコメント数を考えてみてください。ユーザーが新しいコメントを投稿すると、コメント数を表示する別のコンポーネントも更新されます。

この情報を Redux で管理する場合、Relay クエリに新しい情報が含まれているときに Redux アクションをトリガーする方法が必要です。このようなコールバックや、この状況に対する別の解決策については知りません。

私の質問

この文脈で、私はそれらの質問があります:

  1. 既存のアプローチで何を改善できますか? 非常に危険な/矛盾につながるようなことをしたことがありますか? (私の進捗状況を参照)
  2. 何らかの理由で Relay ストアが更新されているときに Redux ストアを同期するにはどうすればよいですか。Redux アクションを Redux ストアに送信できる React コンポーネントのライフサイクル メソッドまたは Relay コールバックを探しています。(未解決の問題を参照)