【React入門】イベント処理の基本を徹底解説|フォーム入力とクリックイベントの使い方

【React入門】イベント処理の基本を徹底解説|フォーム入力とクリックイベントの使い方

はじめに|Reactのイベント処理で僕がつまずいた話

Reactのイベント処理

前回は useEffect について解説しました。

状態と副作用の関係がわかるとアプリの動きが理解できるようになりましたが、次に僕がぶつかった壁は 「イベント処理」 でした。

「ボタンをクリックしても動かない!」
「入力した値が表示されない!」

最初はHTMLと同じ感覚で書いてしまい、何度もエラーに悩まされたのを覚えています。
でもReactでのイベント処理はルールを押さえればシンプルです。

この記事では、初心者の方が混乱しやすい クリックイベントフォーム入力イベント を中心に解説します。


Reactのイベント処理とは?

Reactでは、ユーザーの操作(クリック・入力・変更など)を イベント として扱います。
ただしHTMLのイベント処理とは少し違います。

HTML

<button onclick="handleClick()">Click</button>

React

<button onClick={handleClick}>Click</button>

大きな違いは次の3つです。

  1. キャメルケースを使うonClickonChange など)
  2. 関数を文字列ではなく直接渡す
  3. 仮想DOM上でイベントが処理される

Reactでクリックイベントを扱う方法

Reactのクリックイベントは、

クリック→ハンドラ→setState→UI 更新

React クリックイベントのデータフロー

というデータフローになります。

コード全文(App.js)

import { useState } from "react";

function App() {
  const [count, setCount] = useState(0);

  const handleClick = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <p>カウント: {count}</p>
      <button onClick={handleClick}>+1</button>
    </div>
  );
}

export default App;

抜粋&解説

const handleClick = () => {
  setCount(count + 1);
};
  • handleClick という関数を定義
  • setCount を呼び出して状態を更新
<button onClick={handleClick}>+1</button>
  • HTMLでは onclick="..." と書きますが、Reactでは onClick={関数} と書きます
  • onClick={handleClick} とすることで、関数を「参照」として渡している

初心者がつまずくポイント

  • onClick={handleClick()} と書いてしまう → 関数がすぐ実行されてしまう
  • 正しくは onClick={handleClick} と「関数そのもの」を渡す

Reactでフォーム入力イベントを扱う方法

コード全文(App.js)

import { useState } from "react";

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

  const handleChange = (e) => {
    setText(e.target.value);
  };

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

export default App;

抜粋&解説

const [text, setText] = useState("");
  • 入力内容を text という状態で管理
  • 初期値は空文字 ""
const handleChange = (e) => {
  setText(e.target.value);
};
  • onChange イベントで入力内容を受け取る
  • e.target.value は「入力された文字列」
<input type="text" value={text} onChange={handleChange} />
  • value={text} で状態を入力欄に反映
  • onChange={handleChange} で入力を更新

初心者がつまずくポイント

  • value を指定しないと「制御されない入力欄」になり、Reactらしく管理できない
  • Reactでは必ず valueonChange をセットで書く

Reactイベント処理で初心者がつまずくポイントまとめ

コードの記法でいうと、大きな違いとしては以下のあたりかなと思います。

  1. 属性名はキャメルケースonClickonChange
  2. 関数を直接渡すonClick={handleClick}
  3. フォーム入力は valueonChange をセットで使う

まとめ|Reactイベント処理の基本を押さえよう

Reactのイベント処理はHTMLと似ているけれど、書き方のルールが違うことが分かったかと思います。

  • クリックイベント:関数をそのまま渡す
  • フォーム入力イベントvalueonChange を組み合わせる
そたや

僕自身、最初は「動かない!」と何度も悩みましたが、ポイントを理解してからはすぐ書けるようになりました。

イベント処理をマスターすると、アプリに「動き」をつけるのが楽しくなります!

関連記事|React入門シリーズでさらに学ぶ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です