🐣

React(TypeScript) + Firebaseでメモアプリ開発

2023/09/24に公開

背景

今回使用したライブラリーのバージョン

  • React: 18.2.0
  • TypeScript: 5.0.2
  • Vite: 4.4.5
  • Firebase: 10.4.0
  • MUI: 5.14.10
  • Recoil: 0.7.7

メモアプリの機能

以下の機能を持つアプリを作成し、Firebaseにホスティングした。

  • サインイン、サインアウト
  • メモの一覧表示
  • メモの登録、更新

学んだことのまとめ

Firestore

Hosting

  • React(SPA)アプリをFirebase Hostingにデプロイを参考に作業した
  • Github Actionsとの連携を行わない方が簡単に実現できると思うので、初めての人にはそちらがおすすめ
  • まずはローカルでReactをビルドする(npm run build)。これによりデフォルトではdistディレクトリ以下に静的ファイルが作成される
  • firebase initを行ったディレクトリ直下の公開用ディレクトリ(デフォルトではpublic)に、distディレクトリの中身をコピー
  • その後firebase deployコマンドでデプロイするとホスティングできる

Recoil

はまったところ

Google認証後、Firestoreにメモを取得、作成しようとするとTypeError: Cannot add property 0, object is not extensibleのエラーが発生。どうもsignInWithPopupの戻り値に含まれるUser型の値をそのまま保持するとエラーが発生するようで、uidやdisplayNameのみ保持するよう処理を変更しエラー解消した。

https://stackoverflow.com/questions/71095296/error-from-firestore-when-subscribing-to-user-state-typeerror-cannot-add-prope

コード

https://github.com/shoji9x9/memo-app

アプリケーション

https://vite-react-f4c90.web.app/

今後の予定

  • メモの削除機能の追加
  • GithubにプッシュするとFirebaseにデプロイするようにする(Github Actions利用)
  • React Hook Form、Zodの利用
  • Functions、Messagingなどのまだ利用していないFirebaseの機能を試す

その他参考にしたサイト

Discussion