問題タブ [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.
graphql - リレーで認証する方法
ユーザーを認証する正しいポイントは何ですか?
例としてリレースターターキットを使用します。
これはクエリのポイントのように思われます (引数 id を追加しました)
次に、データベースで次のようなことを行います
今、それがバラバラになっているこのポイントです.IDの作成を要求する場所はどこですか? 私はルートを想定します
これは機能していません。
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 スカラー型はありますか? これに関するご意見やご指示をいただければ幸いです。
graphql - Relay/GraphQL 接続にカスタム フィールドを追加
ページネーションに使用するレコードの総数を追加しようとしています。今、接続を確認できますが、totalCount を切り離すために接続を変更するのに問題があります。
この場合、BookConnection で接続オブジェクトを取得すると。その値をフィールドに割り当てられるようにしたい。
変数totalCount
のプロパティを作成するにはどうすればよいですか?connection
ここで答えの一部を見つけました: pageInfo で合計カウントをクライアントに渡す方法
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 (レコードのフィルタリング用) およびsort
arg (一意のインデックスによるレコードの並べ替え用) が大幅に追加されています。
したがって、カーソルの一意性について次の質問があります。
1) カーソルは異なるタイプ間で一意であるべきですか?
2) 異なる引数を持つ 1 つの接続間でカーソルを一意にする必要がありますか?
例えば。UserConnection には、フィルター引数があります。そして、最初のリストにすべてのユーザーを表示し、2番目のリストにオンラインユーザーを表示したい(ページ上で同時に2つのリスト)。同じカーソルを持つユーザーが両方のリストに存在する可能性があります。
3) Relay が 1 つの接続で同様のカーソルを取得した場合、エラーがスローされますか?
4) カーソルを base64 でエンコードする必要がありますか、それとも文字列化された json オブジェクトが含まれている可能性がありますか?
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 アクションをトリガーする方法が必要です。このようなコールバックや、この状況に対する別の解決策については知りません。
私の質問
この文脈で、私はそれらの質問があります:
- 既存のアプローチで何を改善できますか? 非常に危険な/矛盾につながるようなことをしたことがありますか? (私の進捗状況を参照)
- 何らかの理由で Relay ストアが更新されているときに Redux ストアを同期するにはどうすればよいですか。Redux アクションを Redux ストアに送信できる React コンポーネントのライフサイクル メソッドまたは Relay コールバックを探しています。(未解決の問題を参照)