見出し画像

5/4.log

やっとログイン機能ができたかな

今日はフロントエンドの仕上げをしていてバックエンドの修正をしていました。これで今まで貯めていたイシュー、プロジェクトのタスクを全て終わらすことができました!

フロントエンドはとりあえず昨日不備を感じたルートプロテクトを修正していました。ログインしているかの状態管理に応じてルートプロテクトを行っていたのですがローディング中といったことがどうしても行ってしまい弾かれるといったことが起きていました。対策として情報処理中といった変数をつけることにより例外処理を行いました。

反省点

今回は認証のためにJWTの状態管理はcontextを設定しグローバルに適用させています。usecontextから他のコンポーネントで使える値としては以下のようになっています。

  return (
   <JWTContext.Provider value={{ jwt, setJWT, isChecking, isLoggedIn, deleteJWT }}>{children}</JWTContext.Provider>
 );

jwtはトークンそのもの、setJWTは状態変更です。またdeleteJWTは関数です。それ以外は名前の通りだとは思います。そこで思ったことが一つありグローバルな状態管理の場合set関係のものは使えるようにせずにuseReducerを使って管理した方が良いと感じました。

というのもsetをグローバル化させた場合今回の例ではJWTという変数をいつでもどこでも変更できてしまいますよね。確かに状態変化させる値はJWTという文字列の入った変数一つだけですがさまざまな変化のさせ方をする必要があり、その結果どうしても予期しない変更を起こしてしまう気がします。

一つのページでしか使われないのであればまだしもグローバルであり変化させる状態が複数ある場合はsetを送らずreducerを使った方が良いと感じました。

次作るものは?

次に作るものをここ数日考えていたのですがついに思いつきました。そこで今日は実装ができそうかの検証を行うとともにライブラリの調査なども行っていました。そこそこ大きなものになりそうで考え方ものも今までになさそうなものなのです!

ただ自分が思ったような感じで実装できるかはわからないです。ここ数日かけて調査していきます!

この記事が気に入ったらサポートをしてみませんか?