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

ReactとTypeScriptの基本:フォームイベントを扱う方法を徹底解説!初心者向け入門ガイド

TypeScriptでフォームイベントを扱う方法
TypeScriptでフォームイベントを扱う方法

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

生徒

「先生、Reactでフォームを作るときにTypeScriptを使うと便利って聞いたんですが、どういうことですか?」

先生

「いい質問だね。Reactではフォームイベントを扱うことが多いんだけど、TypeScriptを使うとそのイベントに型をつけられるから、安心してコードを書けるんだよ。」

生徒

「型をつけるっていうのは、具体的にどんな感じなんですか?」

先生

「例えば、テキストボックスやボタンを操作したときに起きるイベントを正しく扱うために、ChangeEventFormEventといった型を指定するんだ。実際の書き方を見てみよう!」

1. Reactでフォームイベントを扱う基本

1. Reactでフォームイベントを扱う基本
1. Reactでフォームイベントを扱う基本

フォームイベントとは、ユーザーが入力したり送信したりするときに発生する動作のことです。例えば「テキストボックスに文字を入力する」「送信ボタンをクリックする」といったものです。

TypeScriptを使うと、こうしたイベントに「型」をつけることができます。型とは「どんなデータが入るのかをあらかじめ決めるルール」のことです。これにより予期しないエラーを防ぎやすくなります。

2. 入力イベント(ChangeEvent)の型定義

2. 入力イベント(ChangeEvent)の型定義
2. 入力イベント(ChangeEvent)の型定義

テキストボックスなどの入力欄で使うのはChangeEvent<HTMLInputElement>という型です。この型を指定することで、入力欄に関する正しいプロパティに安全にアクセスできます。


import React, { useState, ChangeEvent } from "react";

function FormExample() {
  const [text, setText] = useState("");

  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
    setText(e.target.value);
  };

  return (
    <div>
      <input type="text" value={text} onChange={handleChange} />
      <p>入力された文字: {text}</p>
    </div>
  );
}

export default FormExample;
(入力欄に文字を入力すると、下に「入力された文字: ○○」とリアルタイムで表示されます)

このときe.target.valueで文字列を安全に取り出せるのは、ChangeEvent<HTMLInputElement>で型を明示しているからです。

3. フォーム送信イベント(FormEvent)の型定義

3. フォーム送信イベント(FormEvent)の型定義
3. フォーム送信イベント(FormEvent)の型定義

フォーム全体を送信するイベントにはFormEvent<HTMLFormElement>を使います。これにより、送信処理を正しく制御できます。


import React, { useState, FormEvent } from "react";

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

  const handleSubmit = (e: FormEvent<HTMLFormElement>) => {
    e.preventDefault();
    alert("送信された名前: " + name);
  };

  return (
    <form onSubmit={handleSubmit}>
      <input
        type="text"
        value={name}
        onChange={(e) => setName(e.target.value)}
      />
      <button type="submit">送信</button>
    </form>
  );
}

export default SubmitExample;
(名前を入力して送信ボタンを押すと「送信された名前: ○○」とアラートが表示されます)

ここでe.preventDefault()を呼ぶのは、ブラウザがページをリロードしないようにするためです。フォーム送信イベントはそのままだと画面をリセットしてしまうので注意しましょう。

4. セレクトボックスやチェックボックスのイベント

4. セレクトボックスやチェックボックスのイベント
4. セレクトボックスやチェックボックスのイベント

セレクトボックスやチェックボックスでもChangeEventを使います。ただし対象がHTMLSelectElementHTMLInputElement(type="checkbox")に変わります。


import React, { useState, ChangeEvent } from "react";

function SelectExample() {
  const [option, setOption] = useState("A");

  const handleChange = (e: ChangeEvent<HTMLSelectElement>) => {
    setOption(e.target.value);
  };

  return (
    <div>
      <select value={option} onChange={handleChange}>
        <option value="A">A</option>
        <option value="B">B</option>
      </select>
      <p>選択された値: {option}</p>
    </div>
  );
}

export default SelectExample;
(プルダウンでAかBを選ぶと「選択された値: A」または「選択された値: B」と表示されます)

このように、イベントの対象となる要素ごとに適切な型を指定するのがTypeScriptの基本です。

5. 初心者が押さえておくべきポイント

5. 初心者が押さえておくべきポイント
5. 初心者が押さえておくべきポイント

ここまで学んだことを整理すると次の通りです。

  • 入力欄にはChangeEvent<HTMLInputElement>を使う。
  • フォーム全体の送信にはFormEvent<HTMLFormElement>を使う。
  • セレクトボックスにはChangeEvent<HTMLSelectElement>を使う。
  • チェックボックスもChangeEvent<HTMLInputElement>で扱える。

初心者のうちは、まずこの4つを覚えておけば安心です。フォームイベントに正しい型をつけることで、エラーを防ぎやすくなり、実際の開発でも安全にフォームを扱えるようになります。

カテゴリの一覧へ
新着記事
New1
React
ReactのuseEffectで非同期処理をキャンセルする方法を初心者向けに解説
New2
React
Reactの条件分岐の使い方を完全ガイド!初心者でもわかるReactの条件分岐
New3
React
ReactとTypeScriptの基本:フォームイベントを扱う方法を徹底解説!初心者向け入門ガイド
New4
Next.js
Next.jsではnpmとyarnどちらを使うべき?初心者でも迷わない完全比較ガイド
人気記事
No.1
Java&Spring記事人気No1
React
ViteでReact開発環境を構築する手順を完全ガイド!初心者でもできるReactの環境構築
No.2
Java&Spring記事人気No2
React
ReactのPropsを使ってコンポーネントの表示を動的に切り替える方法を解説!初心者でもわかるReact入門
No.3
Java&Spring記事人気No3
React
Reactとは?初心者でもわかるReact.jsの基本概念と特徴をやさしく解説
No.4
Java&Spring記事人気No4
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.5
Java&Spring記事人気No5
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.6
Java&Spring記事人気No6
React
ReactのuseStateとuseEffectでよくあるエラーと解決方法ガイド!初心者でもわかるReactフック
No.7
Java&Spring記事人気No7
React
Reactの環境構築とは?初心者でもできるセットアップ手順まとめ
No.8
Java&Spring記事人気No8
React
Reactで複数イベントをまとめて処理!共通関数化でコード整理