カテゴリ: Next.js 更新日: 2026/02/25

Next.js Client Componentsでフォーム入力を扱う実装パターン完全ガイド!初心者でもわかるNext.jsフォーム処理

Next.js Client Componentsでフォーム入力を扱う実装パターン
Next.js Client Componentsでフォーム入力を扱う実装パターン

先生と生徒の会話形式で理解しよう

生徒

「Next.jsって、フォームの入力も扱えるんですか?」

先生

「もちろん扱えますよ。特にClient Componentsを使うと、入力フォームがとても分かりやすく書けます。」

生徒

「Client Componentsって何ですか?難しそうです…」

先生

「大丈夫です。ボタンを押したり、文字を入力したりする画面操作を担当する仕組みだと思ってください。」

1. Next.js Client Componentsとは何か?

1. Next.js Client Componentsとは何か?
1. Next.js Client Componentsとは何か?

Next.jsには、Server ComponentsClient Componentsという考え方があります。Client Componentsは、ブラウザ上で動く部品です。

たとえば、文字を入力する、ボタンを押す、チェックを入れるといった操作は、すべてClient Componentsが担当します。パソコンで言うと、キーボードやマウスの動きにすぐ反応する部分です。

Client Componentsを使うときは、ファイルの一番上に「use client」と書きます。これは「この部品はブラウザで動かします」という合図です。

2. フォーム入力にClient Componentsが必要な理由

2. フォーム入力にClient Componentsが必要な理由
2. フォーム入力にClient Componentsが必要な理由

フォーム入力とは、名前やメールアドレスを入力する画面のことです。入力した瞬間に画面が変わったり、エラーを表示したりするには、即時反応が必要です。

このような即時反応は、Client Componentsでしか実現できません。Server Componentsは画面を表示するのは得意ですが、入力のたびに動く処理は苦手です。

そのため、Next.jsでフォームを作るときは、Client Componentsを使うのが基本になります。

3. useStateを使った基本のフォーム入力

3. useStateを使った基本のフォーム入力
3. useStateを使った基本のフォーム入力

まずは、一番シンプルなフォーム入力です。useStateは、入力された値を覚えておくための仕組みです。


"use client";
import { useState } from "react";

export default function FormSample() {
  const [name, setName] = useState("");

  return (
    <div>
      <p>名前を入力してください</p>
      <input
        type="text"
        value={name}
        onChange={(e) => setName(e.target.value)}
      />
      <p>入力内容:{name}</p>
    </div>
  );
}
(文字を入力すると、すぐ下に入力した内容が表示されます)

4. 送信ボタンを使ったフォーム処理

4. 送信ボタンを使ったフォーム処理
4. 送信ボタンを使ったフォーム処理

次は、ボタンを押してから処理を行うパターンです。これは「入力して、最後に決定する」流れになります。


"use client";
import { useState } from "react";

export default function SubmitForm() {
  const [email, setEmail] = useState("");
  const [message, setMessage] = useState("");

  const handleSubmit = () => {
    setMessage("送信されました:" + email);
  };

  return (
    <div>
      <input
        type="email"
        placeholder="メールアドレス"
        value={email}
        onChange={(e) => setEmail(e.target.value)}
      />
      <button onClick={handleSubmit}>送信</button>
      <p>{message}</p>
    </div>
  );
}
(メールアドレスを入力して送信ボタンを押すと、送信メッセージが表示されます)

5. チェックボックスを扱うフォーム例

5. チェックボックスを扱うフォーム例
5. チェックボックスを扱うフォーム例

フォームでは、チェックボックスもよく使われます。これは「はい・いいえ」を選ぶ仕組みです。


"use client";
import { useState } from "react";

export default function CheckForm() {
  const [agree, setAgree] = useState(false);

  return (
    <div>
      <label>
        <input
          type="checkbox"
          checked={agree}
          onChange={(e) => setAgree(e.target.checked)}
        />
        利用規約に同意する
      </label>
      <p>{agree ? "同意しています" : "同意していません"}</p>
    </div>
  );
}
(チェックを入れると「同意しています」と表示されます)

6. 複数の入力項目をまとめて扱う方法

6. 複数の入力項目をまとめて扱う方法
6. 複数の入力項目をまとめて扱う方法

実際のフォームでは、名前や年齢など複数の入力欄があります。その場合は、まとめて管理すると便利です。


"use client";
import { useState } from "react";

export default function MultiForm() {
  const [form, setForm] = useState({ name: "", age: "" });

  return (
    <div>
      <input
        placeholder="名前"
        value={form.name}
        onChange={(e) => setForm({ ...form, name: e.target.value })}
      />
      <input
        placeholder="年齢"
        value={form.age}
        onChange={(e) => setForm({ ...form, age: e.target.value })}
      />
      <p>{form.name}さん({form.age}歳)</p>
    </div>
  );
}
(名前と年齢を入力すると、まとめて表示されます)

7. フォーム入力時の注意点と考え方

7. フォーム入力時の注意点と考え方
7. フォーム入力時の注意点と考え方

Client Componentsでフォームを扱うときは、入力値を必ず状態として管理します。これにより、画面とデータがずれません。

また、入力のたびに画面が変わる仕組みなので、処理はシンプルに保つことが大切です。初心者のうちは、まず入力して表示する流れを理解することが重要です。

Next.jsのClient Componentsは、ユーザー操作に強い味方です。フォーム入力はその代表的な使いどころと言えます。

カテゴリの一覧へ
新着記事
New1
React
Reactのフォーム入力を再利用しよう!初心者でもわかるフィールドコンポーネント化の考え方
New2
React
Reactでできること一覧!初心者でもわかるWebアプリ・スマホアプリ・PWAの活用方法
New3
React
React.jsが人気な理由!VueやAngularとの違いを初心者向けに徹底比較
New4
Next.js
Next.js×StorybookでUI開発環境を整える方法!初心者でもわかるNext.jsの環境構築
人気記事
No.1
Java&Spring記事人気No1
React
Reactでキーボードイベントを活用する方法!onKeyDown, onKeyUp, onKeyPressを初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactのPresentational Componentを完全ガイド!初心者でもわかるStateを持たないコンポーネントの特徴
No.3
Java&Spring記事人気No3
React
Reactでフォーカスイベントを制御する方法!onFocusとonBlurを初心者向けに解説
No.4
Java&Spring記事人気No4
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.5
Java&Spring記事人気No5
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.6
Java&Spring記事人気No6
Next.js
Next.js Server Componentsのメリット・デメリットを完全解説!初心者でもわかるNext.jsの基本
No.7
Java&Spring記事人気No7
React
Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方
No.8
Java&Spring記事人気No8
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介