【Firebase】Firestore Databaseを使い、Reactでメッセージ送信機能を実装する
前回は、Firebase Authentication の機能を使って、FIrestore Database からデータを取得し、ブラウザに表示させました。
【Firebase】FIrestore Databaseから取得したデータを、ブラウザに表示させる
今回は、Firestore Database を使い、React でメッセージ送信機能を実装します。
まずは、メッセージを送信するコンポーネントを作成します。
components フォルダに MessageInput.tsx を作成します。
MUI のBox、Button、Divider、Stack、TextFieldを使い、画面を作成します。
また、アイコンは、MUI のSendIconを使用します。
Home.tsx で MessageInput.tsx をインポートします。
ブラウザで確認すると、
入力欄と送信ボタンが表示されました。
MessageInput.tsx へ戻り、テキストの状態管理を設定します。
送信ボタンをクリックした時に、handleClick関数が動作するようにします。
handleClick関数内に、Firebase の処理を実装します。
以前 Firebase の初期設定した、Firebase フォルダの firebaseConfig からfirebaseAppをインポートします。
Firebase の設定は、こちらをご覧ください。
【Firebase】Firebase Project Configを設定する
【Firebase】Firestore Databeseのデータを、フロントエンドに表示する
try/catch を使い、成功した場合にはデータを送信し、失敗した場合にはエラーを表示するようにします。
エラー処理として、エラーを状態管理し、MUI のAlertを設定しましょう。
エラーの場合は、setErrorがtrueになるようにします。
try の中を設定します。
Firebase Database のどのコレクションに書き込むかを設定するために、firebase/firestoreからcollectionをインポートします。
collection の第一引数に先程設定した firestore、第二引数にコレクション名である『messages』を指定します。
Firebase へデータを送信するために、firebase/firestoreからaddDocをインポートします。
addDoc の第一引数に先程設定したdocRef、第二引数に送信したい内容を設定します。
送信したい内容は、textとcreatedAtにしましょう。
textは、messageを指定します。
createdAt は、Firebase の Timestamp を使用したいので、firebase/firestoreからTimestampをインポートします。
TimestampのfromDateを使用して、Firebase の Timestamp を設定します。
一通り完成したので、動作確認します。
メッセージを入力してみます。
送信ボタンをクリックすると、
メッセージが追加されました。
Firebase Database を確認すると、データが追加されていました。
このままでは、空文字を送信しても、送信されてしまいます。
空文字を送信できないように、try の前に条件文を追加します。
messege がからの場合は、エラーを表示するようにして return しましょう。
空文字を送信してみると、
送信できず、エラーメッセージが表示されました。
次回は、プロフィール編集画面を作成し、Firestore Storage にアバター画像を保存します。
【Firebase】プロフィール編集画面を作成し、Firestore Storageにアバター画像を保存する
お知らせ
私事ですが、Udemyで初心者を対象にしたReactの動画コースを作成しました。
Reactについて興味がありましたら、ぜひ下のリンクからアクセスしてください。
詳しくはこちら(Udemyの外部サイトへ遷移します)