カテゴリ: React 更新日: 2026/02/19

Reactで複数フォームをまとめて管理する方法を完全解説!初心者でもわかるフォーム処理

複数フォームをまとめて管理する方法
複数フォームをまとめて管理する方法

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

生徒

「Reactで入力フォームをたくさん作ったら、管理が大変になってきました…」

先生

「フォームが増えると、状態の管理が難しくなりますよね」

生徒

「一つずつuseStateを書くのがつらいです」

先生

「大丈夫です。複数フォームをまとめて管理する方法がありますよ」

1. フォームが増えると何が大変なのか

1. フォームが増えると何が大変なのか
1. フォームが増えると何が大変なのか

Reactでフォームを作り始めたばかりの頃は、入力欄が一つか二つなので問題になりません。 しかし、名前、メール、年齢、住所など項目が増えてくると、それぞれに状態を持たせる必要があります。

状態とは、画面の今の状態を記憶しておく箱のようなものです。 入力欄ごとに箱を作ると、数が増えて管理が難しくなります。

2. useStateを一つずつ使う基本的な方法

2. useStateを一つずつ使う基本的な方法
2. useStateを一つずつ使う基本的な方法

まずは、よくある書き方を確認してみましょう。 初心者の多くが最初に書く方法です。


import React, { useState } from "react";

function App() {
  const [name, setName] = useState("");
  const [email, setEmail] = useState("");

  return (
    <div>
      <input value={name} onChange={(e) => setName(e.target.value)} />
      <input value={email} onChange={(e) => setEmail(e.target.value)} />
    </div>
  );
}

export default App;
(それぞれの入力欄に入力した内容が状態として保存されます)

3. オブジェクトを使ってまとめて管理する考え方

3. オブジェクトを使ってまとめて管理する考え方
3. オブジェクトを使ってまとめて管理する考え方

複数のフォームをまとめて管理したい場合は、 オブジェクトという仕組みを使います。 オブジェクトとは、複数の情報を一つにまとめた箱です。

例えるなら、引き出しがたくさんある収納ケースのようなものです。 名前の引き出し、メールの引き出し、といった形で管理できます。

4. オブジェクトで複数フォームを管理する実装例

4. オブジェクトで複数フォームを管理する実装例
4. オブジェクトで複数フォームを管理する実装例

useStateを一つだけ使い、その中で複数の入力値を管理します。 これにより、コードがすっきりします。


import React, { useState } from "react";

function App() {
  const [form, setForm] = useState({
    name: "",
    email: ""
  });

  const handleChange = (e) => {
    setForm({
      ...form,
      [e.target.name]: e.target.value
    });
  };

  return (
    <div>
      <input name="name" value={form.name} onChange={handleChange} />
      <input name="email" value={form.email} onChange={handleChange} />
    </div>
  );
}

export default App;
(入力した内容が一つの状態としてまとめて管理されます)

5. 入力欄が増えても対応できるメリット

5. 入力欄が増えても対応できるメリット
5. 入力欄が増えても対応できるメリット

この方法の良い点は、入力欄が増えても状態の数が増えないことです。 住所や電話番号を追加しても、同じ仕組みで管理できます。

handleChangeという一つの処理で全ての入力を受け取れるため、 修正や追加がしやすくなります。

6. 複数フォームを配列で管理する方法

6. 複数フォームを配列で管理する方法
6. 複数フォームを配列で管理する方法

同じ形のフォームが何個もある場合は、配列を使って管理する方法もあります。 配列とは、同じ種類のデータを順番に並べたものです。


import React, { useState } from "react";

function App() {
  const [items, setItems] = useState(["", ""]);

  const handleChange = (index, value) => {
    const newItems = [...items];
    newItems[index] = value;
    setItems(newItems);
  };

  return (
    <div>
      {items.map((item, index) => (
        <input
          key={index}
          value={item}
          onChange={(e) => handleChange(index, e.target.value)}
        />
      ))}
    </div>
  );
}

export default App;
(同じ入力欄をまとめて管理できます)

7. 管理方法を使い分けるポイント

7. 管理方法を使い分けるポイント
7. 管理方法を使い分けるポイント

入力項目が固定で種類が違う場合は、オブジェクト管理が向いています。 一方、同じ入力欄が増減する場合は、配列管理が便利です。

どちらも「まとめて管理する」という考え方が共通しています。 この考え方を理解すると、フォーム処理が一気に楽になります。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

よくある間違いは、状態を直接書き換えてしまうことです。 Reactでは、新しい状態を作って更新する必要があります。

少し難しく感じたら、「新しい紙に書き直す」イメージで考えると理解しやすくなります。

カテゴリの一覧へ
新着記事
New1
React
ReactとJavaScriptの関係とは?なぜセットで学ぶ必要があるのか
New2
Next.js
Next.jsのRoute Groupを使った複雑なLayout構成を完全解説!初心者でもわかるNext.jsレイアウト設計
New3
React
Reactで状態に応じてスタイルを切り替える方法を徹底解説!初心者でもわかる条件付きレンダリングとクラス付与
New4
React
ReactのJSXで関数を呼び出して要素を生成する方法を完全ガイド!初心者向けReactの基本をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
React
ReactのuseEffect依存配列を徹底解説!初心者でも理解できるDependency Arrayの仕組み
No.3
Java&Spring記事人気No3
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.4
Java&Spring記事人気No4
Next.js
Next.jsのApp RouterとServer Componentsの関係まとめ!初心者でもわかるNext.jsの新しい仕組み
No.5
Java&Spring記事人気No5
React
React開発におすすめのVSCode拡張機能まとめ!初心者でもすぐ使える便利ツール紹介
No.6
Java&Spring記事人気No6
React
ReactのuseEffectで初回のみ処理を実行する方法を徹底解説!初心者でもわかるReactフック入門
No.7
Java&Spring記事人気No7
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
No.8
Java&Spring記事人気No8
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説