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

Reactでイベントハンドラに引数を渡す方法をアロー関数で解説!初心者向けガイド

イベントハンドラに引数を渡す方法(アロー関数活用)
イベントハンドラに引数を渡す方法(アロー関数活用)

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

生徒

「Reactでボタンを押したときに、どのボタンが押されたかを引数で渡して処理することはできますか?」

先生

「はい、できます。その場合、アロー関数を使ってイベントハンドラに引数を渡す方法が便利です。」

生徒

「アロー関数って何ですか?」

先生

「アロー関数は、簡潔に関数を定義できるJavaScriptの書き方です。Reactでもよく使われます。」

生徒

「それでは、具体的にコードで見てみたいです!」

1. 引数を渡す基本的な書き方

1. 引数を渡す基本的な書き方
1. 引数を渡す基本的な書き方

Reactでイベントに応じて異なる処理を行いたい場合、イベントハンドラへ引数を渡す方法を知っておくと非常に便利です。通常、イベントハンドラには関数名だけを渡しますが、そのままでは引数を指定できません。そこで登場するのがアロー関数です。アロー関数でラップすることで、クリックされた瞬間に必要な値を関数へ渡せるようになります。


import React, { useState } from "react";

function App() {
  const [message, setMessage] = useState("");

  // ボタンごとのメッセージを受け取る関数
  const handleClick = (text) => {
    setMessage(text);
  };

  return (
    <div>
      <h1>{message}</h1>
      <button onClick={() => handleClick("ボタンAがクリックされました!")}>
        ボタンA
      </button>
      <button onClick={() => handleClick("ボタンBがクリックされました!")}>
        ボタンB
      </button>
    </div>
  );
}

export default App;
(画面にボタンが表示され、ボタンAを押すと「ボタンAがクリックされました!」、ボタンBを押すと「ボタンBがクリックされました!」と表示されます)

このようにアロー関数を使うと、「どのボタンから呼ばれたか」を簡単に判別できます。特に複数のボタンやリスト項目を扱う場面では、引数によって処理内容を切り替えることでコードが分かりやすく整理されます。アロー関数は直感的で書きやすいため、Reactでイベント処理を書くときの基本的なテクニックとして覚えておくととても役立ちます。

2. イベントオブジェクトと引数を同時に使う方法

2. イベントオブジェクトと引数を同時に使う方法
2. イベントオブジェクトと引数を同時に使う方法

Reactでは、クリックされた理由やそのときの詳しい情報を知りたい場面がよくあります。例えば「どのボタンが押されたか」というメッセージだけでなく、「クリックされた瞬間のイベント情報」も使いたい場合があります。そのときに便利なのが、アロー関数で引数とeventオブジェクトを同時に渡す書き方です。イベントオブジェクトには、クリックされた位置や対象の要素など多くの情報が含まれているため、画面の動作をより細かく制御できます。


import React from "react";

function App() {
  const handleClick = (text, event) => {
    console.log(event); // クリックイベントの詳細を表示
    alert(text);
  };

  return (
    <div>
      <button onClick={(event) => handleClick("クリックされました!", event)}>
        クリックしてみよう
      </button>
    </div>
  );
}

export default App;
(ボタンを押すと「クリックされました!」と表示され、同時にイベント情報がコンソールに出力されます)

このように、アロー関数の引数でeventを受け取り、さらに任意の値も渡せるため、クリック操作に応じた柔軟な処理が可能になります。例えば、フォーム入力のチェックや、どのリスト項目が押されたかを調べたいときにとても役立ちます。Reactを使ったイベント処理では頻出するパターンなので、早めに慣れておくと実践でスムーズに使いこなせます。

3. 実践的なポイント

3. 実践的なポイント
3. 実践的なポイント

イベントハンドラに引数を渡す場合は、アロー関数を使って関数を呼び出す方法を覚えておくと便利です。複数のボタンやリンク、フォーム要素で共通の関数を使うときに特に役立ちます。

また、関数の命名はわかりやすくすることが重要です。例えばhandleClickhandleDeleteのように、どの操作を処理する関数か一目でわかる名前をつけると、後でコードを見直すときに迷いません。

アロー関数を使うことで、簡潔に書けるだけでなく、thisの扱いも直感的になるので、Reactコンポーネントの中での状態管理やイベント処理がスムーズに行えます。

4. 引数付きイベントハンドラの配列での活用

4. 引数付きイベントハンドラの配列での活用
4. 引数付きイベントハンドラの配列での活用

ボタンが複数ある場合、配列やオブジェクトで管理して、mapを使ってまとめてイベントハンドラに引数を渡すこともできます。これにより、同じ関数を使って複数の要素を効率的に処理できます。


import React, { useState } from "react";

function App() {
  const [message, setMessage] = useState("");
  const buttons = ["A", "B", "C"];

  const handleClick = (text) => {
    setMessage(text);
  };

  return (
    <div>
      <h1>{message}</h1>
      {buttons.map((btn) => (
        <button key={btn} onClick={() => handleClick("ボタン" + btn + "がクリックされました!")}>
          ボタン{btn}
        </button>
      ))}
    </div>
  );
}

export default App;
(複数ボタンが表示され、どのボタンを押しても対応するメッセージが表示されます)

5. イベントハンドラで非同期処理と引数を組み合わせる

5. イベントハンドラで非同期処理と引数を組み合わせる
5. イベントハンドラで非同期処理と引数を組み合わせる

引数付きのイベントハンドラで非同期処理を行う場合もアロー関数が役立ちます。例えばAPI呼び出しやタイマー処理の中で、どのボタンから呼ばれたかを識別できます。


import React from "react";

function App() {
  const handleAsyncClick = async (text) => {
    await new Promise((resolve) => setTimeout(resolve, 1000));
    alert(text);
  };

  return (
    <div>
      <button onClick={() => handleAsyncClick("非同期処理が完了しました!")}>
        非同期ボタン
      </button>
    </div>
  );
}

export default App;
(ボタンを押すと1秒後にアラートが表示されます。どのボタンからの呼び出しかも識別可能です)

6. コンポーネント外部関数と引数付きイベント

6. コンポーネント外部関数と引数付きイベント
6. コンポーネント外部関数と引数付きイベント

イベントハンドラをコンポーネント外で定義しても、アロー関数を使えば引数を渡せます。これにより、処理を分離して可読性や再利用性を高めることができます。


import React from "react";

const showMessage = (text) => {
  alert(text);
};

function App() {
  return (
    <div>
      <button onClick={() => showMessage("外部関数で引数付き処理")}>
        外部関数ボタン
      </button>
    </div>
  );
}

export default App;
(ボタンを押すと外部関数が呼ばれ、引数に応じたメッセージが表示されます)

まとめ

まとめ
まとめ

Reactでイベントハンドラに引数を渡す方法について学びました。基本的にはアロー関数を使って関数をラップすることで、ボタンやフォームなどのイベントに対して任意の引数を渡すことができます。さらに、イベントオブジェクトを同時に受け取る方法や、複数ボタンを配列やmapで管理して引数付きイベントを効率的に扱う方法、非同期処理と組み合わせて引数を渡す方法、そしてコンポーネント外部で定義した関数にも引数を渡す方法まで解説しました。これにより、Reactコンポーネント内でのイベント処理がより柔軟で直感的になり、コードの可読性や再利用性も向上します。

サンプルプログラムまとめ


import React, { useState } from "react";

function App() {
  const [message, setMessage] = useState("");
  const buttons = ["A", "B", "C"];

  const handleClick = (text, event) => {
    console.log(event);
    setMessage(text);
  };

  return (
    <div>
      <h1>{message}</h1>
      {buttons.map((btn) => (
        <button key={btn} onClick={(event) => handleClick("ボタン" + btn + "がクリックされました!", event)}>
          ボタン{btn}
        </button>
      ))}
    </div>
  );
}

export default App;
(複数ボタンを押すと、押されたボタンに応じたメッセージが表示され、コンソールにはイベント情報が出力されます)
先生と生徒の振り返り会話

生徒

「今回の学習で、アロー関数を使えばイベントハンドラに簡単に引数を渡せることがわかりました。」

先生

「その通りです。さらにイベントオブジェクトも同時に受け取れるので、ボタンやリストの操作をより細かく制御できます。」

生徒

「配列やmapを使って複数のボタンをまとめて処理するのも便利ですね。」

先生

「はい。これにより、コードの可読性と再利用性が高まり、複雑なUIでも効率的に処理できます。」

生徒

「非同期処理とも組み合わせられるので、API呼び出しなどにも活用できますね。」

先生

「そうです。Reactのイベントハンドラに引数を渡すテクニックは、初心者が効率よく操作できるだけでなく、アプリ全体の保守性や拡張性も向上させます。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Reactでイベントハンドラに引数を渡すにはどうすればよいですか?

Reactではイベントハンドラに引数を渡すとき、アロー関数を使って関数をラップする方法が一般的です。直接関数名を書くと引数を渡せないため、クリックされたときにのみ関数が実行されるようにアロー関数を利用します。
カテゴリの一覧へ
新着記事
New1
React
Reactコンポーネントの再利用と分割を完全マスター!初心者でもわかるコンポーネント設計
New2
React
ReactでAxiosインターセプターの使い方を完全ガイド!初心者でもわかるリクエストとレスポンスの処理方法
New3
React
JSXの書き方!初心者でもわかるReactタグと属性の基本ルール解説
New4
React
ReactとDockerを使った開発環境構築の基本を徹底解説!初心者でもわかるReactとDockerの連携方法
人気記事
No.1
Java&Spring記事人気No1
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.3
Java&Spring記事人気No3
React
Reactのイベントハンドリングのアンチパターンまとめ!初心者でもわかる注意点
No.4
Java&Spring記事人気No4
React
Reactのカスタムフックの作り方を完全ガイド!再利用可能なロジックを切り出す仕組み
No.5
Java&Spring記事人気No5
React
ReactでFetch APIのローディング状態を管理する方法|初心者にもわかる解説
No.6
Java&Spring記事人気No6
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.7
Java&Spring記事人気No7
React
ReactのuseStateとuseEffectでよくあるエラーと解決方法ガイド!初心者でもわかるReactフック
No.8
Java&Spring記事人気No8
React
Reactでファイルアップロードを実装する方法を解説!Fetch APIで画像やPDFを送る仕組みを初心者向けに紹介