問題タブ [apollo-link]
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.
reactjs - Apollo と React で認証失敗をキャッチした後に正しくリダイレクトする方法
を使用する反応アプリを作成しており、認証エラーをグローバルにキャッチするためapollo-client
に使用しています。ブラウザの履歴操作とアプリの状態の管理にapollo-link-error
使用しています。createBrowserHistory
redux
認証エラーで、ユーザーをページにリダイレクトしたい/login
。ただし、これを行うhistory.push('/login')
と forceRefresh:false は URL を変更しますが、実際にはアプリ内を移動しません。
使用するforceRefresh:true
と機能しますが、アプリが完全に再起動されるので、避けたいと思います。
`
redux-router
問題は、ナビゲートにメソッドを使用していないことだと思います(したがって、URLが変更されてもアプリは同じままです)
Q:コンポーネント内にいないときにredux history
、使用するのと同様のオブジェクトを取得するにはどうすればよいですか? withRouter()
この状況を処理する適切な方法は何ですか?
graphql - データが null でない場合、ゲートウェイとして実行されている Apollo Server がリモート エラーを隠している
apollo-server-express
ゲートウェイ アプリケーションとして実行しています。makeRemoteExecutableSchema
とapollo-link-http
. _
通常、すべての呼び出しが機能します。エラーが応答の一部であり、データが null の場合も機能します。ただし、データにデータのみが含まれ、エラーにはエラーが含まれる場合。データは渡されますが、エラーは空です
例 A 「実際の例」:
クエリ
クエリ応答
例 B「非表示のエラー」:
クエリ
リモートサービスからの応答 (httpLink)
response.errors
メソッドにはエラーも含まれていgraphQLErrors
ますonError
応答
graphql仕様によると、エラーオブジェクトが応答の一部である場合、エラーオブジェクトが非表示にならないと予想していました
https://graphql.github.io/graphql-spec/June2018/#sec-Errors
応答のデータ エントリが存在する場合 (値が null の場合を含む)、応答のエラー エントリには、実行中に発生したエラーが含まれている可能性があります。実行中にエラーが発生した場合は、それらのエラーが含まれている必要があります。
apollo - 再試行成功時の Apollo-link @client ミューテーション
ネットワーク エラーによる再試行時に、React アプリで通知をレンダリングしています。接続が再確立された場合 (再試行が成功した場合) に、そのような通知をクリアしたい
apollo-link-retry
カスタム コールバックを使用して、attempts
再試行ループの開始時とタイムアウト時にキャッシュを変更しました。これは機能しますが、再試行が成功するとコールバックが呼び出されないため、再試行が成功すると通知が画面に表示されたままになり、キャッシュから通知をクリアする方法がありません。
apollo-link-error
同様の問題を使用して、同様のロジックを実装しようとしました。リンクはエラーが発生した場合にのみ呼び出され、再試行の成功はエラーではありません。
apollo-link-retry
「ほぼ」機能する私の構成は次のとおりです。
これを実現するには、カスタム リンクを実装する必要があるのでしょうか。apollo-link-retry
素敵な再試行ロジックを活用し、さらにロジックの進行に合わせて状態をキャッシュに出力する方法を見つけたいと思っています。