を使用する反応アプリを作成しており、認証エラーをグローバルにキャッチするためapollo-client
に使用しています。ブラウザの履歴操作とアプリの状態の管理にapollo-link-error
使用しています。createBrowserHistory
redux
認証エラーで、ユーザーをページにリダイレクトしたい/login
。ただし、これを行うhistory.push('/login')
と forceRefresh:false は URL を変更しますが、実際にはアプリ内を移動しません。
使用するforceRefresh:true
と機能しますが、アプリが完全に再起動されるので、避けたいと思います。
const errorLink = onError(({ graphQLErrors, networkError }) => {
if(graphQLErrors[0].extensions.code == "UNAUTHENTICATED") {
// with forceRefresh:true this works, but causes a nasty
// reload, without the app doesn't navigate, only the url changes
history.push('/login')
}
});
`
let links = [errorLink, authLink, httpLink];
const link = ApolloLink.from(links);
const client = new ApolloClient({
link: link,
cache: new InMemoryCache(),
connectToDevTools: true,
});
redux-router
問題は、ナビゲートにメソッドを使用していないことだと思います(したがって、URLが変更されてもアプリは同じままです)
Q:コンポーネント内にいないときにredux history
、使用するのと同様のオブジェクトを取得するにはどうすればよいですか? withRouter()
この状況を処理する適切な方法は何ですか?