lup*_*pin 8 apollo react-native react-apollo react-navigation
我只是使用 React-Native 作为客户端并检查服务器中的验证令牌。
当我的 jwt 令牌过期时,服务器会将其通知给客户端。
然后,apollo-client 捕获 graphQL 错误。
我想导航到注销用户并使其进入登录表单。
但是,我不知道如何在我的 graphQL forEach 块中做到这一点,
因为我无法在导航容器之外使用反应导航。
有谁知道解决这个问题吗?
...
const cache = new InMemoryCache()
await persistCache({
cache,
storage: AsyncStorage,
})
const clientState = (cache) =>
new ApolloClient({
link: ApolloLink.from([
...
onError(({ graphQLErrors, networkError }) => {
if (graphQLErrors)
graphQLErrors.forEach(
async ({ message, locations, path }) => {
console.log(
`[GraphQL error]: Message: ${message}, Location: ${JSON.stringify(
locations
)}, Path: ${path}`
)
if (
message ===
"You need to log in to perform this action"
) {
logout() >>>>>>>>>>>> I want to redirect!
}
}
)
if (networkError)
console.log(`[Network error]: ${networkError}`)
}),
...
]})
const client = clientState(cache)
return loaded && client ? (
<ApolloHooksProvider client={client}>
<SafeAreaProvider>
<AuthProvider isLoggedIn={isLoggedIn} userEmail={userEmail}>
<NavigationContainer style={{ backgroundColor: "white" }}>
<TopNav />
</NavigationContainer>
</AuthProvider>
</SafeAreaProvider>
</ApolloHooksProvider>
) : (
<AppLoading />
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |