ネットワーク エラーによる再試行時に、React アプリで通知をレンダリングしています。接続が再確立された場合 (再試行が成功した場合) に、そのような通知をクリアしたい
apollo-link-retry
カスタム コールバックを使用して、attempts
再試行ループの開始時とタイムアウト時にキャッシュを変更しました。これは機能しますが、再試行が成功するとコールバックが呼び出されないため、再試行が成功すると通知が画面に表示されたままになり、キャッシュから通知をクリアする方法がありません。
apollo-link-error
同様の問題を使用して、同様のロジックを実装しようとしました。リンクはエラーが発生した場合にのみ呼び出され、再試行の成功はエラーではありません。
apollo-link-retry
「ほぼ」機能する私の構成は次のとおりです。
const retryLink = new RetryLink({
attempts: (count) => {
let notifyType
let shouldRetry = true
if (count === 1) {
notifyType = 'CONNECTION_RETRY'
shouldRetry = true
} else if (count <= 30) {
shouldRetry = true
} else {
notifyType = 'CONNECTION_TIMEOUT'
shouldRetry = false
}
if (notifyType) {
client.mutate({
mutation: gql`
mutation m($notification: Notification!) {
raiseNotification(notification: $notification) @client
}
`,
variables: {
notification: { type: notifyType }
}
})
}
return shouldRetry
}
})
これを実現するには、カスタム リンクを実装する必要があるのでしょうか。apollo-link-retry
素敵な再試行ロジックを活用し、さらにロジックの進行に合わせて状態をキャッシュに出力する方法を見つけたいと思っています。