React native Apollo客户端onError未重试请求

React native Apollo客户端onError未重试请求,react-native,apollo,react-apollo,apollo-client,React Native,Apollo,React Apollo,Apollo Client,因此,根据阿波罗链接错误的阿波罗文档,onError如果与转发(操作)一起使用,则可用于处理重新身份验证 所以我写了下面的代码 从“apollo客户端”导入{apollo客户端} 从'apollo link http'导入{createHttpLink,HttpLink} 从“apollo链接上下文”导入{setContext} 从'apollo cache inmemory'导入{InMemoryCache} 从“@react native community/async storage”导入

因此,根据阿波罗链接错误的阿波罗文档,
onError
如果与
转发(操作)
一起使用,则可用于处理重新身份验证

所以我写了下面的代码

从“apollo客户端”导入{apollo客户端}
从'apollo link http'导入{createHttpLink,HttpLink}
从“apollo链接上下文”导入{setContext}
从'apollo cache inmemory'导入{InMemoryCache}
从“@react native community/async storage”导入异步存储
从“react native app auth”导入{refresh}
从“阿波罗链接错误”导入{onError}
从'apollo link'导入{apollo link,from}
从“apollo链接重试”导入{RetryLink}
从“../../CONFIG/env”导入{KC_CONFIG}
const httpLink=新的httpLink({
uri:“graphqlEndpointOfYourchoice”
})
const authLink=setContext(异步({headers})=>{
const accessToken=await AsyncStorage.getItem('accessToken')
const unwrappedAccessToken=JSON.parse(accessToken)
返回{
标题:{
…标题,
授权:unwrappedAccessToken?`Bearer${unwrappedAccessToken}`:“”,
}
}
})
const errorLink=onError({graphQLErrors,networkError,operation,forward})=>{
如果(图形错误){
AsyncStorage.getItem('refreshToken')
。然后(数据=>{
const refreshToken=JSON.parse(数据)
//console.log(数据)
刷新(KC_配置{
刷新令牌,
})
。然后({accessToken,refreshtToken})=>{
const oldHeaders=operation.getContext().headers
操作.setContext({
…旧标题,
授权:accessToken
})
console.log(oldHeaders.authorization)
日志(accessToken)
//console.log(刷新令牌)
异步存储
.multiSet([
['accessToken',JSON.stringify(accessToken)],
['refreshToken',JSON.stringify(refreshToken)]
])
//试着在这里提出{
如果(e.message==='Token未激活')console.log('logging out')
else console.log('刷新错误:'+e)
})
})
.然后(()=>{
console.log('刷新了accesstoken')
返回前进(操作)
})
.catch(e=>{
console.log('存储错误:'+e)
})
}
如果(网络错误){
console.log('网络错误:'+网络错误)
}

//你找到解决办法了吗?你找到解决办法了吗?