スポンサーリンク

React クリックイベントの基本形

JavaScript
スポンサーリンク
本ページにはプロモーションが含まれています。
たろ
たろ

Reactのクリックイベントの実装方法がわからない。

こんな疑問を解決します。

本記事の内容
  • Reactのクリックイベントの実装方法の紹介
  • 具体的なコードと実演も合わせて紹介

React のクリックイベントの基本形をメモしておきます。

初めて学ぶ言語は何度も繰り返し書かないと忘れがちなので、、、

スポンサーリンク

これまでのReact学習記録

環境

実験は下記のファイル構成。

.
├── Dockerfile
├── css
│   └── styles.css
├── index.html
└── js
    └── script.js

ローカル環境で作業しています↓

index.html は下記の通り。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>React Practice</title>
  <link rel="stylesheet" href="./css/styles.css?1001">
  <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <!-- <script type="text/javascript" src="./js/scriptj.js"></script> -->
  <script type="text/babel" src="./js/script.js"></script>

</head>
<body>
  <div id="root"></div>
</body>
</html>

Reactの実装

script.js に下記のコードを貼り付けます。

class App extends React.Component {
  constructor(props) {
    super(props);
        
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    alert('ボタンがクリックされました。')
  }

  render () {
    return (
      <div>
        <button onClick={this.handleClick}>ボタン</button>
      </div>
    )
  }
}

ReactDOM.render(
  <App/>,
  document.getElementById('root')
);

JavaScript では、クラスのメソッドはデフォルトではバインドされないため、this.handleClick へのバインドをせずに onClick に実装した場合、関数が呼ばれた時に this は undefined となります。

constructorthis.handleClick = this.handleClick.bind(this); と書くことがポイント。

追記2022.0617:関数コンポーネントによる実装

import React from 'react';
import ReactDOM from 'react-dom';

function App() {
    const buttonAlert = () => {
        alert('ボタンがクリックされました。');
    }

    return (
        <div className="App">
            <header className="App-header">
                Learn React App
            </header>
            <body>
                <div>
                    <button onClick={buttonAlert}>ボタン</button>
                </div>
            </body>
        </div>
    );
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <App />
);

検証

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