ログイン・会員登録

メールアドレスとパスワードの入力チェック、送信中の表示、ログインしたあとの表示までを作ります。

このコードは 2つのファイルでできています。両方を同じフォルダに入れると動きます

LoginTabs.tsx

ログイン・会員登録の画面

auth.tsx

ログイン中の情報を配る(本物では NextAuth などに置き換える)

使い方(Next.js の場合)

自分のプロジェクトで、この画面を出すまでの3つの手順です

  1. 1

    ターミナルで、使う部品とライブラリを入れる(1回だけ)

    npx shadcn@latest add button input label tabs
    npm i react-hook-form zod
    npm i @hookform/resolvers

    shadcn/ui をまだ入れていないプロジェクトでは、先に npx shadcn@latest init を1回打ちます

  2. 2

    ファイルを、この場所に貼る

    my-app/
    ├─ components/
    │   └─ login/
    │       ├─ LoginTabs.tsx   ← 上の窓でコピーしたもの
    │       └─ auth.tsx   ← 上の窓でコピーしたもの
    └─ app/
        └─ login/
            └─ page.tsx   ← 手順3で作る

    フォルダがなければ作ります。ファイルは全部、同じフォルダに入れます

  3. 3

    ページのファイルで読みこむ

    import LoginTabs from "@/components/login/LoginTabs"
    
    export default function Page() {
      return <LoginTabs />
    }

    app/login/page.tsx に書きます。npm run dev で開いて、/login に行くと出ます

ここがポイント

  1. 1

    入力チェックのルールは1か所に

    Zod で「メールの形」「8文字以上」をまとめて書き、エラーの文もそこで決める。会員登録は、ログインのルールに「名前」を足すだけ

  2. 2

    送信中はボタンを押せなくする

    二重送信を防ぐ。ボタンの文字も「ログイン中」に変えて、待っていることを伝える

  3. 3

    ログインした人の情報は全部に配る

    Context に入れておくと、ヘッダーの名前と、中身の「ようこそ」の両方から使える

使った道具

押すと、第2部のくらべるページへ