第7回:クリックや入力に反応する!Reactのイベントハンドリング基礎

lang

前回:useStateをマスター!Reactで画面を動的に書き換える「状態」の基本では、データが変わると画面が自動で更新される魔法「State」を学びました。

しかし、そのStateを「いつ」書き換えるのでしょうか? ユーザーがボタンを押したとき、マウスを乗せたとき、あるいはキーボードを叩いたとき……。こうした「きっかけ」をReactで捕まえる技術が、今回学習するイベントハンドリングです。


1. Reactのイベントは「キャメルケース」

普通のHTMLでは onclickonchange とすべて小文字で書きますが、React(JSX)には大事なルールがあります。

  • ルール: 単語の区切りを大文字にする「キャメルケース」で書く。
    • onclickonClick
    • onchangeonChange
    • onmouseenteronMouseEnter

2026年現在のモダンな開発でも、この書き方は絶対の基本です。これを間違えると、イベントは一切反応してくれません。


2. イベントの中で「何が起きたか」を知る方法

ユーザーが入力した文字や、クリックされた場所などの詳しい情報を知りたいときは、イベントオブジェクト(慣習的に e と書きます)を使います。

特に、第2回の環境構築で少し触れた e.target.value は、入力フォームを扱う際の必須知識です。


3. 【実践】マウスの動きに反応する「色変えパネル」

今回は、ボタンクリックだけでなく「マウスを乗せる(ホバー)」という動きに反応するサンプルを作ります。 第2回の環境で作成した App.jsx を書き換えてみましょう。

App.jsx(最小構成版)

JavaScript

import React, { useState } from 'react';

export default function App() {
  // 1. 状態の定義:背景色を管理する
  const [color, setColor] = useState("lightgray");

  return (
    <div style={{ textAlign: 'center', marginTop: '50px' }}>
      <h1>イベント体験パネル</h1>

      {/* 2. 背景色が状態(color)に連動するパネル */}
      <div 
        style={{ 
          width: '200px', 
          height: '200px', 
          backgroundColor: color, 
          margin: '20px auto',
          lineHeight: '200px',
          border: '2px solid #333'
        }}
        // マウスが乗ったときのイベント
        onMouseEnter={() => setColor("skyblue")}
        // マウスが離れたときのイベント
        onMouseLeave={() => setColor("lightgray")}
      >
        ここにマウスを乗せて
      </div>

      {/* 3. ボタンクリックで色を固定する */}
      <button onClick={() => setColor("orange")}>
        オレンジ色に固定
      </button>

      <p>※マウス操作やクリックという「イベント」でStateを操っています。</p>
    </div>
  );
}

CodeSandboxでイベントハンドリングを体験する


4. コードの解説(JavaScript & React)

JavaScriptのポイント

  • イベントプロパティ: onMouseEnteronMouseLeave は、ブラウザが標準で持っているマウスイベントです。Reactはこれらを効率よく管理してくれます。
  • アロー関数の省略: () => setColor("...") と書くことで、イベントが発生した瞬間にだけ実行される「予約票」を作っています。

Reactのポイント

  • 複数のイベントを組み合わせる: 一つの要素(今回の div)に複数のイベントを設定できます。これにより、「マウスを乗せた時だけ色を変え、離れたら戻す」といった複雑なUIが簡単に作れます。
  • 第6回の復習: ここでも setColor(更新用関数)を使っていますね。イベントは「きっかけ」であり、実際に画面を変えるのは常に「Stateの更新」です。

5. 2026年の学び:インラインで書くか、関数に分けるか

今回のサンプルでは、onClick={() => ...} のようにタグの中に直接処理を書きました(インライン形式)。

2026年現在のベストプラクティスでは:

  • 1行で済む処理: タグの中に直接書く(今回のような形)。
  • 2行以上の複雑な処理: 関数の外に切り出す。

という使い分けが推奨されています。まずは今回の「タグの中に直接書く」方法に慣れて、Reactがユーザーの動きに反応する楽しさを実感してください!


今回のまとめ

  1. イベント名は onClick のように キャメルケース で書く。
  2. イベントは、State(状態)を書き換えるための 「きっかけ」
  3. onMouseEnter(乗る)や onMouseLeave(離れる)など、多様なイベントがある。
  4. イベントオブジェクト(e)を使えば、詳細な情報(入力された文字など)が手に入る。

次回予告:大量のデータを一気に表示する

これまでは、1つのボタンや1つの入力欄だけを扱ってきました。 でも、本物のアプリでは「100件のニュース」や「たくさんの商品リスト」を表示する必要がありますよね。1つずつ手書きするのは大変です。

次回、「第8回:Reactで『リスト表示』を攻略:map関数の使い方とkey属性の重要性」。 JavaScriptの最強武器「map関数」を使って、100個の部品を一瞬で生成するテクニックを学びます。お楽しみに!


本日の宿題: サンプルコードに onDoubleClick(ダブルクリック)を追加して、別の色に変わるように改造してみてください。どんな色が好きですか?

コメント

タイトルとURLをコピーしました