Reactのフォーム送信イベント(onSubmit)を完全解説!初心者でもわかるフォーム処理の基本
生徒
「Reactで入力フォームを作ったんですが、送信ボタンを押したあとってどうやって処理するんですか?」
先生
「そのときに使うのが、フォーム送信イベントのonSubmitです。」
生徒
「ボタンのクリックとは違うんですか?」
先生
「はい。フォーム全体が送信された瞬間を受け取る仕組みなので、入力処理の基本になります。」
1. フォーム送信とは何か
フォーム送信とは、名前やメールアドレスなどを入力し、 送信ボタンを押したときに内容をまとめて処理することです。 紙の申込書に必要事項を書いて、提出箱に入れる行為とよく似ています。 Reactでは、この「提出した瞬間」を検知するためにonSubmitという仕組みを使います。
2. onSubmitの基本的な役割
onSubmitは、formタグに設定します。 これにより、送信ボタンが押されたときや、 キーボードの確定操作が行われたときに処理が実行されます。 ボタンのクリックだけを見るよりも、 フォームとして自然な動きを実現できます。
3. 最もシンプルなonSubmitの例
まずは、送信されたことを画面に知らせるだけの、 とても簡単な例を見てみましょう。
import React from "react";
function App() {
const handleSubmit = () => {
alert("フォームが送信されました");
};
return (
<form onSubmit={handleSubmit}>
<button type="submit">送信</button>
</form>
);
}
export default App;
4. ページが再読み込みされる理由
初心者が戸惑いやすい点として、 フォームを送信すると画面が一度消えてしまうことがあります。 これは、もともとのWebの仕組みで、 フォーム送信時にページを再読み込みする動きがあるためです。 Reactでは、この動きを止めることがよくあります。
5. preventDefaultで再読み込みを防ぐ
再読み込みを止めるには、 event.preventDefaultという処理を使います。 これは「元の動きをやめてください」と伝える命令です。 電車の自動ドアが閉まる前に止めるようなイメージです。
import React from "react";
function App() {
const handleSubmit = (e) => {
e.preventDefault();
alert("ページは再読み込みされません");
};
return (
<form onSubmit={handleSubmit}>
<button type="submit">送信</button>
</form>
);
}
export default App;
6. 入力内容を送信時に使う方法
実際のフォームでは、 入力された内容を送信時にまとめて扱います。 これは、箱に入れた書類を一度に取り出して確認する感覚です。 Stateに保存した値を、 onSubmitの中で使うことができます。
import React, { useState } from "react";
function App() {
const [name, setName] = useState("");
const handleSubmit = (e) => {
e.preventDefault();
alert("入力された名前:" + name);
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
placeholder="名前"
onChange={(e) => setName(e.target.value)}
/>
<button type="submit">送信</button>
</form>
);
}
export default App;
7. onClickではなくonSubmitを使う理由
送信ボタンにonClickを使うこともできますが、 onSubmitを使うほうがフォームとして自然です。 キーボード操作でも送信でき、 入力画面としての使いやすさが向上します。 そのため、フォーム処理ではonSubmitが基本になります。
8. 初心者が覚えておきたいポイント
フォーム送信では、 formタグとonSubmitをセットで使うことが大切です。 再読み込みを防ぐためのpreventDefault、 入力内容をStateから取得する流れを理解すると、 Reactのフォーム処理が一気に分かりやすくなります。 これは、Reactで入力画面を作るうえで欠かせない基本です。