React 速習チュートリアル

React イベント

React は、HTML DOM イベントと同様に、ユーザーの操作(イベント)に応じて特定のアクションを実行できます。
React には、click、change、mouseover など、HTML と同様のイベントが用意されています。

1. イベントの追加

React のイベントは、キャメルケース(camelCase)構文で記述します。
例えば、HTML の onclick は、React では onClick となります。

また、React のイベントハンドラーは波括弧 { } の中に記述します。
HTML のように onclick="shoot()" と記述するのではなく、onClick={shoot} のように指定します。

React:

<button onClick={shoot}>シュートを打つ!</button>

HTML:

<button onclick="shoot()">シュートを打つ!</button>

1.1 実装例

shoot 関数を Football コンポーネントの内部に定義する例を見てみましょう。

function Football() {
  const shoot = () => {
    alert("ナイスシュート!");
  }

  return (
    <button onClick={shoot}>シュートを打つ!</button>
  );
}

createRoot(document.getElementById('root')).render(
  <Football />
);

2. 引数の受け渡し

イベントハンドラーに引数を渡したい場合は、アロー関数(Arrow function)を使用します。

2.1 実装例

アロー関数を使用して、shoot 関数にパラメータとして "ゴール!" という文字列を渡す例です。

function Football() {
  const shoot = (a) => {
    alert(a);
  }

  return (
    // アロー関数の中で関数を呼び出し、引数を渡す
    <button onClick={() => shoot("ゴール!")}>シュートを打つ!</button>
  );
}

createRoot(document.getElementById('root')).render(
  <Football />
);

3. React イベントオブジェクト

イベントハンドラーは、その関数をトリガーした React のイベントオブジェクト(Event Object)にアクセスすることができます。
今回の例では、イベントは "click" イベントになります。

3.1 実装例

アロー関数を使用して、イベントオブジェクトを手動で送信する例です。

function Football() {
  const shoot = (a, b) => {
    alert(b.type);
    /*
    'b' はこの関数をトリガーした React イベントを表します。
    この例では 'click' イベントとなります。
    */
  }

  return (
    // 第2引数としてブラウザのイベントオブジェクトを渡す
    <button onClick={(event) => shoot("ゴール!", event)}>シュートを打つ!</button>
  );
}

createRoot(document.getElementById('root')).render(
  <Football />
);

React のイベントシステムは SyntheticEvent(合成イベント) と呼ばれ、ブラウザ間の仕様差を吸収してくれるため、一貫したインターフェースで開発を進めることが可能です。