【React】axiosの中でリダイレクト処理を実行する

  • 2020年9月24日
  • 2020年9月24日
  • React

以前まで、axios 内部でのリダイレクト処理には location.href を使用していたのですが、react-router を使って書けないか?と思い修正することに。
で、調べたところ、下記の記事が参考になりました。

reactjs – How to redirect in axios? – Stack Overflow
https://stackoverflow.com/questions/51588360/how-to-redirect-in-axios

 

今回私が使用したのは、history ライブラリの createBrowserHistory です。
まず、リダイレクト処理を実行したいプロジェクトに下記を追加します。

import { createBrowserHistory } from 'history';

const history = createBrowserHistory();

で、あとはリダイレクトを行いたいタイミングで下記を実行するだけです!

history.replace('[リダイレクト先]');

こちらを実行したところ、確かに URL はリダイレクト先のものに変わりました。
が、しかし、ページの内容はリダイレクトされる前のページのまま、変わりませんでした…。

他にも、react-routerbrowserHistory を利用するという方法もありましたが、こちらを使うには、react-router のバージョンが 3である必要があり、バージョンを下げてしまうと他の場所の処理が動かなくなるという状況に陥ってしまうため、こちらは却下でした。

また、同じく react-routeruseHistory を使うことも考えたのですが、私の環境では Invalid hook call というエラーが発生して使用できませんでした。

…で、最終的に、無理に react-router を使わなくても良いのでは!?という結論に至りました!

まだ時間的に余裕があるので、もう少し対応してみますが、どうしてもだめなら location.href を使う方法に戻したいと思います。

 

以上、axios の中でリダイレクト処理を実行する方法についてでした。
特に問題がなければ、変にこだわらず location.href を使いましょう!
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG