0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ReactとFirebaseで記事投稿アプリ作った感想 #1

Posted at

Firebaseセットアップ手順

Firebaseコンソールへアクセス

ブラウザで「Firebase」と検索し、Firebaseコンソールを開きます。
まだアカウントを持っていない場合は、メールアドレスとパスワードで新規登録します。
新しいプロジェクトの作成

「プロジェクトの追加」ボタンを押し、プロジェクト名(例: "ブログ")を入力して「続行」をクリックします。
Googleアナリティクスを有効にするか選択しますが、今回は無効にして「プロジェクトを作成」を選びます。
Webアプリの追加

プロジェクトが作成されたら、ウェブのタグをクリックし、アプリ名を設定します(ホスティングはオフにします)。
アプリを登録して、表示されるコマンドやファイルは後で使いますが、今は無視します。
認証設定

「Authentication」を選び、「始める」ボタンを押します。
Googleログインを有効にし、使用するメールアドレスを選択して保存します。
Cloud Firestoreの設定

「Cloud Firestore」をクリックして、「データベースの作成」を選択します。
本番モード(プロダクションモード)を選び、ロケーションを選択して「有効にする」ボタンを押します。
プロジェクト設定

プロジェクトの設定画面で、SDKの設定と構成をコピーします。
VSCodeを開き、Firebaseモジュールをインストールします。
Firebaseのインストール

コマンドラインでFirebaseモジュールをインストールします。
初期化ファイルの作成

firebase.jsというファイルを作成し、コピーした設定を貼り付けます。
Firebaseの認証とFirestoreをインポートし、初期化コードを記述します。
エクスポート

認証とデータベースの初期化が完了したら、それらをエクスポートして他のファイルで使えるようにします。
注意点
Firebaseのバージョンが更新されると、書き方が異なる場合があるので、公式ドキュメントを確認することをおすすめします。
この手順でFirebaseの基本的なセットアップが完了します。次の動画では、FirebaseとReactの連携を進めていきます。

動画の内容、しっかり理解できました!ルーティング設定やナビゲーションバーの作成、そしてCSSスタイリングに関するポイントがたくさんありましたね。以下に、動画で説明された内容の要点をまとめます。

1. ルーティング設定の概要

ルーティング設定は、特定のURLに対してどのコンポーネントを表示するかを決めるものです。例えば、ログインページやホームコンポーネント、投稿記事を表示するために使います。

2. ライブラリのインストール

react-router-domをインストールします。このライブラリを使うことで、簡単にルーティング設定ができます。
bash
コードをコピーする
npm install react-router-dom

3. コンポーネントのインポート

必要なコンポーネントをインポートします。具体的には以下のもの:
javascript
コードをコピーする
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';

4. ルーティングの設定

Routerコンポーネントでアプリ全体を囲み、Routesコンポーネントで個々のルートを設定します。
例えば、ホームコンポーネントを表示する場合は以下のようにします。
javascript
コードをコピーする
} />

5. コンポーネントの作成

HomeコンポーネントやCreatePost、Login、Logoutなどのコンポーネントを作成し、それぞれのURLパスに関連付けます。

6. ナビゲーションバーの作成

ナビゲーションバーは別のコンポーネントとして作成し、リンクを設定します。
Linkコンポーネントを使用して、各ページへの遷移を実現します。

7. CSSスタイリング

ナビゲーションバーのスタイリングを行い、見た目を整えます。以下は主なCSSプロパティの説明:
display: flex: 要素を横並びにする。
justify-content: center: 要素を中央に寄せる。
align-items: center: 縦方向の配置を中央にする。
background-color: 背景色を設定。
text-decoration: none: リンクの下線を消す。

8. ホバーエフェクト

リンクにホバーした際の色変化などのエフェクトも設定します。
これらのポイントを押さえておけば、Reactのルーティングとスタイリングがしっかり理解できるはずです。

ログインページの作成

雛形の作成:

ログインページを簡単な文字とボタンだけの構成にする。
「ログインして始める」と「Googleでログイン」ボタンを追加。
ポップアップでのGoogleログイン:

Firebaseを利用して、Googleのログイン機能を実装する。
ボタンを押すとポップアップが表示され、アカウントを選択してログインできる。

Firebaseの設定

必要な変数の用意:

os(認証に関すること)とgoogleProvider(Googleのプロバイダー)を使用する。
イベントトリガーの設定:

ボタンがクリックされた時の処理をonClickで定義し、loginWithGoogle関数を呼び出す。
公式ドキュメントを参照:

FirebaseのドキュメントでGoogleログインの実装方法を確認。

実装の具体的な流れ

ボタンのクリック処理:

signInWithPopupメソッドを使用してポップアップを表示し、ログイン処理を行う。
非同期処理のため、async/awaitを使う。
ログイン状態の管理:

ログインしたかどうかの状態を管理するため、useStateを利用してisAuthという状態変数を作成。
ローカルストレージにログイン情報を保存。
リダイレクトの設定:

ログイン成功後、自動的にホームコンポーネントに遷移するようにuseNavigateを使用。

確認と動作チェック

ログイン処理の確認:

Googleでログインボタンを押してアカウントを選択すると、コンソールにユーザー情報が表示される。
ログイン情報がローカルストレージに保存され、ページリロード後も保持される。
リダイレクトのテスト:

ログイン後、ホームコンポーネントに正しく遷移するか確認。

次に、ログアウト機能を持つReactコンポーネントを作成します。

1. ログアウトコンポーネントの作成

ログアウトの機能を持つコンポーネントを作成するためには、以下の手順を踏みます。

コンポーネントの作成: 既存のログインコンポーネントをコピーして、ログアウトコンポーネントを作成します。

コンポーネント名や関数名を Logout に変更します。
必要に応じて、ログアウトのボタンを作成し、クリック時の動作を定義します。
ログアウト処理の実装: Googleのサインアウト機能を利用します。

import { signOut } from "firebase/auth"; // Firebaseのサインアウトをインポート

const handleLogout = async () => {
    await signOut(auth); // サインアウト処理
    localStorage.clear(); // ローカルストレージのクリア
    setIsAuth(false); // 認証状態をfalseに
    navigate('/login'); // ログインページにリダイレクト
};

2. ログイン状態の判定

ログインしているかどうかを判定するために、isAuthという状態を使います。

ナビゲーションバーでの切り替え: Navbar.jsなどで、isAuthを使ってボタンの表示を切り替えます。

{isAuth ? (
    <LogoutButton onClick={handleLogout} />
) : (
    <LoginButton />
)}

3. 確認とデバッグ

実装が完了したら、実際にアプリケーションを起動して、以下を確認します。

ログイン状態に応じてボタンが正しく切り替わるか
ログアウトボタンをクリックすると、ユーザーがログアウトされ、リダイレクトされるか
ローカルストレージがクリアされているか
このような流れで進めていくと、ログアウト機能の実装がスムーズに進むと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?