Reactのフォーム入力を再利用しよう!初心者でもわかるフィールドコンポーネント化の考え方
生徒
「Reactでフォームを作ると、同じ入力欄を何度も書くことになるんですが、これって普通ですか?」
先生
「そのまま書くと、同じコードが増えがちですね。Reactでは入力欄も部品として再利用できます。」
生徒
「入力欄もコンポーネントにできるんですか?」
先生
「できます。フォーム入力をフィールドコンポーネントにすると、とても管理しやすくなりますよ。」
1. Reactのフォーム入力とは何か
フォーム入力とは、名前やメールアドレスなどを入力する画面のことです。 Webサイトでよく見る入力欄は、ほとんどがフォームです。 Reactでは、この入力欄の値をJavaScriptで管理します。 入力された文字を覚えておく仕組みを使うことで、画面とデータを同期させます。 初心者のうちは、入力欄一つでもコードが長く感じるかもしれません。
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. フィールドコンポーネントという考え方
フィールドコンポーネントとは、入力欄を一つの部品として切り出したものです。 例えるなら、文房具セットの中の「ペン」だけを取り出して使う感覚です。 入力欄の見た目と動きをまとめておくことで、どこでも同じように使えます。 Reactでは、これをコンポーネント分割と呼びます。
function InputField({ value, onChange }) {
return <input value={value} onChange={onChange} />;
}
export default InputField;
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;
5. label付きのフィールドコンポーネントにする
実際のフォームでは、入力欄の上に説明文があることが多いです。 labelも含めてコンポーネント化すると、より実用的になります。 表示する文字を外から指定できるようにすれば、汎用的に使えます。 これにより、見た目の統一もしやすくなります。
function LabeledInput({ label, value, onChange }) {
return (
<div>
<label>{label}</label>
<input value={value} onChange={onChange} />
</div>
);
}
export default LabeledInput;
6. フィールドコンポーネントで起きやすいミス
初心者がつまずきやすいのは、valueやonChangeを渡し忘れることです。 これを忘れると、入力できないフォームになります。 また、コンポーネントの名前とファイル名がずれると、読み込みエラーになります。 小さな部品だからこそ、基本のルールを守ることが大切です。
7. フォーム全体が見やすくなるメリット
フィールドコンポーネントを使うと、親コンポーネントは配置だけに集中できます。 これは、部屋の設計図を書くような感覚です。 入力欄の細かい処理は部品に任せることで、全体の流れが理解しやすくなります。 結果として、バグも減り、修正も楽になります。
8. 再利用可能なフォームを作るための考え方
再利用を意識するときは、「あとで別の画面でも使えるか」を考えます。 特定の画面専用の文字や処理は、外から渡せる形にします。 Reactのコンポーネント分割は、積み木のように組み立てる発想です。 小さく作って組み合わせることで、柔軟なフォームが完成します。