onAuthStateChangedとcurrentUserの違い、使い分けについて (Firebase)

はじめに

今回もFirebaseの話題です。今回はAuthenticationの、onAuthStateChangedメソッドと、currentUserプロパティの違いと使い分け、あと自分がこれらを使ったときに詰まったところを書き記そうと思います。

1. それぞれの違い

onAuthStateChangedと、currentUserは、どちらもログインしているユーザの情報を入手するメソッド、プロパティです。当初自分がアプリ開発においてonAuthStateChangedの存在を知らず、currentUserのみを使って開発を行っていました。
するとある時、ログインしているのにも関わらずcurrentUserがnullで返ってきてしまうことがあり、調べると、onAuthStateChangedに行きつきました。合わせてcurrentUserがnullになる原因を調べると、Authオブジェクトの状態によってはnullが帰ってくるということがわかりました。
onAuthStateChangedは、Authオブジェクトが初期化されるのを待ってからログイン情報を取得するので、nullが返ってこないようになっています。上位互換です。

2. 使い分けについて

これら2つの使い分けは、正直言って使い分けというよりonAuthStateChanged一択に感じます。今のところログインユーザの情報を取得するのにonAuthStateChangedしか使ってないですが、今のところ問題ないです。もしかしたら今後currentUserを使う機会が来るかもしれないですが、今の時点では思いつかないです。。
最後にonAuthStateChangedを使ったコードを貼っておきます。

useEffect(() => {
    onAuthStateChanged(auth, (user) => {
      if (user !== null) {
        if (user.emailVerified === true) {
          console.log(user);
          navigate("/MyPage");
        }
      }
    });
  }, []);

3. 最後に

次回は、react 、コンポーネントごとにファイル分けしよう、です。