这就是我设置graphQL客户端的方式。进行身份验证后,我有一个App.tsx页面可将我定向到登录页面,然后登录到“ / index”页面。如果发生错误(网络错误和GraphQL错误),它将重定向到“ /错误”页面。
App.tsx
export default () => (
<ErrorBoundary>
<ThemeProvider theme={theme}>
<CssBaseline />
<Router>
<Security {...config}>
<Suspense fallback={<Loading />}>
<Switch>
<Route path="/login" render={renderLogin} />
<SecureRoute path="/" component={Root} />
</Switch>
</Suspense>
</Security>
</Router>
</ThemeProvider>
</ErrorBoundary>
);
index.tsx
return (
<ApolloProvider client={client}>
<Switch>
<Route path="/index" component={indexScreen} />
<Route path="/error" component={ErrorPage} />
<Redirect to="/index" />
</Switch>
</ApolloProvider>
);
};
这是我设置ApolloClient的方式
export default ({ history, auth }: ApolloProps) =>
new ApolloClient({
uri: "/v1/graphql",
onError: ({ networkError, graphQLErrors }) => {
if (networkError || graphQLErrors) {
history.push("error", "Network Error Occurred");
} else if (graphQLErrors) {
history.push("error", "Graphql Error Occurred");
}
},
request: async operation => {
const token = await auth.getAccessToken();
},
});
我应该如何处理内部服务器错误,以防服务器停机。我还在App.tsx上设置了ErrorBoundary,但它确实捕获了服务器错误。同样,在实施了将用户定向到错误页面的逻辑之后,重新渲染仍然发生,这将导致引发无限的内部服务器错误。任何帮助表示赞赏。谢谢。