カテゴリ: React 更新日: 2026/03/12

Reactのフォーム入力を再利用しよう!初心者でもわかるフィールドコンポーネント化の考え方

フォーム入力を再利用可能なフィールドコンポーネントにする方法
フォーム入力を再利用可能なフィールドコンポーネントにする方法

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

生徒

「Reactでフォームを作ると、同じ入力欄を何度も書くことになるんですが、これって普通ですか?」

先生

「そのまま書くと、同じコードが増えがちですね。Reactでは入力欄も部品として再利用できます。」

生徒

「入力欄もコンポーネントにできるんですか?」

先生

「できます。フォーム入力をフィールドコンポーネントにすると、とても管理しやすくなりますよ。」

1. Reactのフォーム入力とは何か

1. Reactのフォーム入力とは何か
1. Reactのフォーム入力とは何か

フォーム入力とは、名前やメールアドレスなどを入力する画面のことです。 Webサイトでよく見る入力欄は、ほとんどがフォームです。 Reactでは、この入力欄の値をJavaScriptで管理します。 入力された文字を覚えておく仕組みを使うことで、画面とデータを同期させます。 初心者のうちは、入力欄一つでもコードが長く感じるかもしれません。

2. フォーム入力をそのまま書いた場合の問題点

2. フォーム入力をそのまま書いた場合の問題点
2. フォーム入力をそのまま書いた場合の問題点

フォームをそのまま作ると、inputタグと状態管理のコードを何度も書くことになります。 名前用、メール用、パスワード用と増えるたびに、似たコードが増えていきます。 これは、同じ説明を何回もノートに書くようなものです。 修正が必要になったとき、すべて直さなければならず、ミスも起きやすくなります。


import { useState } from "react";

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

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

export default App;

3. フィールドコンポーネントという考え方

3. フィールドコンポーネントという考え方
3. フィールドコンポーネントという考え方

フィールドコンポーネントとは、入力欄を一つの部品として切り出したものです。 例えるなら、文房具セットの中の「ペン」だけを取り出して使う感覚です。 入力欄の見た目と動きをまとめておくことで、どこでも同じように使えます。 Reactでは、これをコンポーネント分割と呼びます。


function InputField({ value, onChange }) {
  return <input value={value} onChange={onChange} />;
}

export default InputField;

4. フィールドコンポーネントを使って再利用する方法

4. フィールドコンポーネントを使って再利用する方法
4. フィールドコンポーネントを使って再利用する方法

作成したフィールドコンポーネントは、親コンポーネントから使います。 valueやonChangeを渡すことで、入力された内容を親が管理できます。 これは、親がメモ帳を持っていて、子がそこに書き込むイメージです。 同じInputFieldを使い回せるため、コード量が一気に減ります。


import { useState } from "react";
import InputField from "./InputField";

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

  return (
    <InputField value={email} onChange={(e) => setEmail(e.target.value)} />
  );
}

export default App;
(入力欄に文字を入れると、その内容がReactの状態として保存されます)

5. label付きのフィールドコンポーネントにする

5. label付きのフィールドコンポーネントにする
5. label付きのフィールドコンポーネントにする

実際のフォームでは、入力欄の上に説明文があることが多いです。 labelも含めてコンポーネント化すると、より実用的になります。 表示する文字を外から指定できるようにすれば、汎用的に使えます。 これにより、見た目の統一もしやすくなります。


function LabeledInput({ label, value, onChange }) {
  return (
    <div>
      <label>{label}</label>
      <input value={value} onChange={onChange} />
    </div>
  );
}

export default LabeledInput;

6. フィールドコンポーネントで起きやすいミス

6. フィールドコンポーネントで起きやすいミス
6. フィールドコンポーネントで起きやすいミス

初心者がつまずきやすいのは、valueやonChangeを渡し忘れることです。 これを忘れると、入力できないフォームになります。 また、コンポーネントの名前とファイル名がずれると、読み込みエラーになります。 小さな部品だからこそ、基本のルールを守ることが大切です。

7. フォーム全体が見やすくなるメリット

7. フォーム全体が見やすくなるメリット
7. フォーム全体が見やすくなるメリット

フィールドコンポーネントを使うと、親コンポーネントは配置だけに集中できます。 これは、部屋の設計図を書くような感覚です。 入力欄の細かい処理は部品に任せることで、全体の流れが理解しやすくなります。 結果として、バグも減り、修正も楽になります。

8. 再利用可能なフォームを作るための考え方

8. 再利用可能なフォームを作るための考え方
8. 再利用可能なフォームを作るための考え方

再利用を意識するときは、「あとで別の画面でも使えるか」を考えます。 特定の画面専用の文字や処理は、外から渡せる形にします。 Reactのコンポーネント分割は、積み木のように組み立てる発想です。 小さく作って組み合わせることで、柔軟なフォームが完成します。

カテゴリの一覧へ
新着記事
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とTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.8
Java&Spring記事人気No8
React
Reactのカードコンポーネントを汎用的に設計する方法!初心者でもわかる再利用の考え方